{"id":13565,"date":"2023-02-04T19:44:45","date_gmt":"2023-02-04T19:44:45","guid":{"rendered":"https:\/\/tech-lib.net\/tech\/understanding-c-inheritance\/"},"modified":"2023-02-04T19:44:45","modified_gmt":"2023-02-04T19:44:45","slug":"understanding-c-inheritance","status":"publish","type":"post","link":"https:\/\/tech-lib.net\/tech\/understanding-c-inheritance\/","title":{"rendered":"Understanding C++ Inheritance"},"content":{"rendered":"<div class=\"orig\">\n<div class=\"origqestion\">Co to jest dziedziczenie w programowaniu?<\/div>\n<div class=\"origanswer\">Dziedziczenie to funkcja j\u0119zyk\u00f3w programowania obiektowego, kt\u00f3ra <b>umo\u017cliwia zdefiniowanie klasy bazowej, kt\u00f3ra zapewnia okre\u015blone funkcje (dane i zachowanie) oraz definiowanie klas pochodnych, kt\u00f3re dziedzicz\u0105 lub zast\u0119puj\u0105 t\u0119 funkcj\u0119<\/b>.<\/div>\n<div class=\"origurl\">\n\t\t\t\t\t<span> Dowiedz si\u0119 wi\u0119cej na<\/span> <a href=\"https:\/\/learn.microsoft.com\/pl-pl\/dotnet\/csharp\/fundamentals\/tutorials\/inheritance#:~:text=Dziedziczenie%20to%20funkcja%20j%C4%99zyk%C3%B3w%20programowania,dziedzicz%C4%85%20lub%20zast%C4%99puj%C4%85%20t%C4%99%20funkcj%C4%99.\">learn.microsoft.com<\/a>\n\t\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"articlecontent\">\n<div class=\"newlinediv\"><\/div>\n<p> C++ to obiektowy j\u0119zyk programowania, kt\u00f3ry jest szeroko stosowany w tworzeniu aplikacji. Dziedziczenie jest jedn\u0105 z kluczowych cech programowania w j\u0119zyku C++, kt\u00f3ra umo\u017cliwia klasom przejmowanie w\u0142a\u015bciwo\u015bci i metod innej klasy. Dziedziczenie to mechanizm, kt\u00f3ry umo\u017cliwia oparcie nowej klasy na istniej\u0105cej klasie, umo\u017cliwiaj\u0105c nowej klasie dziedziczenie w\u0142a\u015bciwo\u015bci i metod istniej\u0105cej klasy. W tym artykule om\u00f3wimy podstawy dziedziczenia w j\u0119zyku C++, w tym na czym si\u0119 ono opiera i jak obliczy\u0107 dziedziczenie. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Czym jest dziedziczenie w Javie? <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Java to kolejny popularny j\u0119zyk programowania, kt\u00f3ry r\u00f3wnie\u017c obs\u0142uguje dziedziczenie. Dziedziczenie w Javie jest mechanizmem, kt\u00f3ry umo\u017cliwia nowej klasie bazowanie na istniej\u0105cej klasie, dzi\u0119ki czemu nowa klasa mo\u017ce dziedziczy\u0107 w\u0142a\u015bciwo\u015bci i metody istniej\u0105cej klasy. Jednak dziedziczenie w Javie r\u00f3\u017cni si\u0119 nieco od dziedziczenia w C++, poniewa\u017c obs\u0142uguje tylko pojedyncze dziedziczenie, co oznacza, \u017ce klasa mo\u017ce dziedziczy\u0107 w\u0142a\u015bciwo\u015bci i metody tylko z jednej klasy nadrz\u0119dnej. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Czym jest dziedziczenie w Pythonie? <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Python jest kolejnym j\u0119zykiem programowania, kt\u00f3ry obs\u0142uguje dziedziczenie. Dziedziczenie w Pythonie dzia\u0142a w taki sam spos\u00f3b jak dziedziczenie w C++, gdzie nowa klasa mo\u017ce by\u0107 oparta na istniej\u0105cej klasie, co pozwala nowej klasie dziedziczy\u0107 w\u0142a\u015bciwo\u015bci i metody istniej\u0105cej klasy. Jednak\u017ce, dziedziczenie w Pythonie obs\u0142uguje r\u00f3wnie\u017c dziedziczenie wielokrotne, co oznacza, \u017ce klasa mo\u017ce dziedziczy\u0107 w\u0142a\u015bciwo\u015bci i metody z wielu klas nadrz\u0119dnych. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Kt\u00f3re funkcje nie s\u0105 dziedziczone? <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Chocia\u017c prawd\u0105 jest, \u017ce dziedziczenie C++ pozwala nowej klasie na przej\u0119cie w\u0142a\u015bciwo\u015bci i metod istniej\u0105cej klasy, istniej\u0105 pewne funkcje, kt\u00f3re nie s\u0105 dziedziczone. Funkcje te obejmuj\u0105 konstruktory, destruktory i funkcje zaprzyja\u017anione. Konstruktory i destruktory to specjalne funkcje, kt\u00f3re s\u0142u\u017c\u0105 odpowiednio do tworzenia i niszczenia obiekt\u00f3w. Funkcje te s\u0105 unikalne dla ka\u017cdej klasy i nie mog\u0105 by\u0107 dziedziczone przez podklas\u0119. Z drugiej strony, funkcje zaprzyja\u017anione to funkcje, kt\u00f3re s\u0105 zadeklarowane jako zaprzyja\u017anione przez klas\u0119 i mog\u0105 uzyska\u0107 dost\u0119p do jej prywatnych i chronionych cz\u0142onk\u00f3w. Funkcje zaprzyja\u017anione nie s\u0105 jednak dziedziczone przez podklas\u0119. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Na czym opiera si\u0119 dziedziczenie? <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Dziedziczenie w C++ opiera si\u0119 na hierarchii klas, gdzie ka\u017cda klasa nazywana jest klas\u0105 nadrz\u0119dn\u0105 lub bazow\u0105, a ka\u017cda podklasa nazywana jest klas\u0105 podrz\u0119dn\u0105 lub pochodn\u0105. Klasa podrz\u0119dna mo\u017ce dziedziczy\u0107 w\u0142a\u015bciwo\u015bci i metody ze swojej klasy nadrz\u0119dnej, a tak\u017ce mo\u017ce dodawa\u0107 nowe w\u0142a\u015bciwo\u015bci i metody. Klasa nadrz\u0119dna jest r\u00f3wnie\u017c znana jako superklasa, podczas gdy klasa podrz\u0119dna jest znana jako podklasa. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Jak obliczy\u0107 dziedziczenie? <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Dziedziczenie mo\u017cna obliczy\u0107 za pomoc\u0105 nast\u0119puj\u0105cego wzoru: <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> spadek = (aktywa og\u00f3\u0142em &#8211; pasywa og\u00f3\u0142em) \/ liczba spadkobierc\u00f3w <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> wz\u00f3r ten s\u0142u\u017cy do obliczania spadku, kt\u00f3ry otrzyma ka\u017cdy spadkobierca po \u015bmierci danej osoby. Jednak w programowaniu C++ dziedziczenie nie jest obliczane w ten spos\u00f3b. Zamiast tego dziedziczenie jest obliczane na podstawie liczby klas nadrz\u0119dnych, kt\u00f3re ma podklasa. Na przyk\u0142ad, je\u015bli podklasa ma tylko jedn\u0105 klas\u0119 nadrz\u0119dn\u0105, m\u00f3wi si\u0119, \u017ce ma pojedyncze dziedziczenie. Je\u015bli ma dwie lub wi\u0119cej klas nadrz\u0119dnych, m\u00f3wi si\u0119, \u017ce ma dziedziczenie wielokrotne. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Podsumowuj\u0105c, dziedziczenie w C++ jest pot\u0119\u017cn\u0105 funkcj\u0105, kt\u00f3ra pozwala klasom nabywa\u0107 w\u0142a\u015bciwo\u015bci i metody innych klas. Dziedziczenie opiera si\u0119 na hierarchii klas, gdzie ka\u017cda klasa nazywana jest klas\u0105 nadrz\u0119dn\u0105 lub bazow\u0105, a ka\u017cda podklasa nazywana jest klas\u0105 podrz\u0119dn\u0105 lub pochodn\u0105. Podczas gdy niekt\u00f3re funkcje nie s\u0105 dziedziczone, takie jak konstruktory, destruktory i funkcje przyjaciela, inne mog\u0105 by\u0107 dziedziczone przez podklas\u0119. Dziedziczenie mo\u017cna obliczy\u0107 na podstawie liczby klas nadrz\u0119dnych, kt\u00f3re ma podklasa, przy czym dziedziczenie pojedyncze i wielokrotne to dwa typy dziedziczenia obs\u0142ugiwane w C++.<\/p><\/div>\n<div class=\"questions\">\n<div class=\"questionstitle\">FAQ<\/div>\n<div class=\"question\">\n<div class=\"qtitle\"> Czym s\u0105 funkcje dziedziczone?<\/div>\n<p> W C++ dziedziczenie, cechy dziedziczone odnosz\u0105 si\u0119 do cech lub w\u0142a\u015bciwo\u015bci klasy nadrz\u0119dnej, kt\u00f3re s\u0105 przekazywane do jej klas podrz\u0119dnych. Funkcje te mog\u0105 obejmowa\u0107 elementy cz\u0142onkowskie danych, funkcje cz\u0142onkowskie, a nawet inne klasy lub szablony zdefiniowane przez klas\u0119 nadrz\u0119dn\u0105. Dziedzicz\u0105c te cechy, klasy potomne mog\u0105 ponownie wykorzystywa\u0107 i opiera\u0107 si\u0119 na funkcjonalno\u015bci klasy nadrz\u0119dnej, zamiast konieczno\u015bci ponownego definiowania jej od podstaw.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Co to jest dziedziczenie w programowaniu? Dziedziczenie to funkcja j\u0119zyk\u00f3w programowania obiektowego, kt\u00f3ra umo\u017cliwia zdefiniowanie klasy bazowej, kt\u00f3ra zapewnia okre\u015blone funkcje (dane i zachowanie) oraz definiowanie klas pochodnych, kt\u00f3re dziedzicz\u0105 lub zast\u0119puj\u0105 t\u0119 funkcj\u0119. Dowiedz si\u0119 wi\u0119cej na learn.microsoft.com C++ to obiektowy j\u0119zyk programowania, kt\u00f3ry jest szeroko stosowany w tworzeniu aplikacji. Dziedziczenie jest jedn\u0105 z &#8230; <a title=\"Understanding C++ Inheritance\" class=\"read-more\" href=\"https:\/\/tech-lib.net\/tech\/understanding-c-inheritance\/\" aria-label=\"Dowiedz si\u0119 wi\u0119cej o Understanding C++ Inheritance\">Dowiedz si\u0119 wi\u0119cej<\/a><\/p>\n","protected":false},"author":3759,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8567],"tags":[],"class_list":["post-13565","post","type-post","status-publish","format-standard","hentry","category-object-oriented"],"_links":{"self":[{"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/posts\/13565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/users\/3759"}],"replies":[{"embeddable":true,"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/comments?post=13565"}],"version-history":[{"count":0,"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/posts\/13565\/revisions"}],"wp:attachment":[{"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/media?parent=13565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/categories?post=13565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tech-lib.net\/tech\/wp-json\/wp\/v2\/tags?post=13565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}