Dziedziczenie to system programowania obiektowego, który umożliwia obiektom obsługę operacji zdefiniowanych przez typy przednie bez konieczności podawania własnej definicji. Jest to główny wektor polimorfizmu w programowaniu obiektowym.
Planując swoje programy, często zaczynam od takiego łańcucha myśli: Drużyna piłkarska to tylko lista piłkarzy. Dlatego powinienem to przedstawić za pomocą: var football_team = new List<FootballPlayer>(); Kolejność na tej liście odpowiada kolejności, w jakiej gracze są umieszczeni na liście. Ale później zdaję sobie sprawę, że drużyny mają także inne właściwości, …
Jakie są różnice między tymi dwoma fragmentami kodu? Używanie type(): import types if type(a) is types.DictType: do_something() if type(b) in types.StringTypes: do_something_else() Używanie isinstance(): if isinstance(a, dict): do_something() if isinstance(b, str) or isinstance(b, unicode): do_something_else()
Czy istnieje powód, dla którego deklaracja klasy może dziedziczyć object? Właśnie znalazłem kod, który to robi i nie mogę znaleźć dobrego powodu, dla którego to zrobiłbym. class MyClass(object): # class code follows...
API Reference strona Zakres mówi: Zakres może dziedziczyć z zakresu nadrzędnego. Developer Guide strona Zakres mówi: Zakres (prototypowo) dziedziczy właściwości z zakresu nadrzędnego. Czy zatem zakres potomny zawsze dziedziczy prototypowo po zakresie macierzystym? Czy są wyjątki? Kiedy dziedziczy, czy zawsze jest to normalne dziedziczenie prototypowe JavaScript?
Jestem trochę zdezorientowany, jak generycy Java radzą sobie z dziedziczeniem / polimorfizmem. Załóżmy następującą hierarchię - Animal (Parent) Pies - Kot (Dzieci) Załóżmy, że mam metodę doSomething(List<Animal> animals). Przez wszystkich zasad dziedziczenia i polimorfizmu, chciałbym założyć, że List<Dog> jestList<Animal> i List<Cat> jestList<Animal> - a więc albo można być przekazywane do …
Podczas tworzenia prostej hierarchii obiektów w Pythonie chciałbym móc wywoływać metody klasy nadrzędnej z klasy pochodnej. W Perlu i Javie istnieje słowo kluczowe dla tego ( super). W Perlu mogę to zrobić: package Foo; sub frotz { return "Bamf"; } package Bar; @ISA = qw(Foo); sub frotz { my $str …
Jak wywołać funkcję nadrzędną z klasy pochodnej przy użyciu C ++? Na przykład mam klasę o nazwie parenti klasę o nazwie childpochodzącą od rodzica. W każdej klasie jest printfunkcja. W definicji funkcji drukowania dziecka chciałbym wywołać funkcję drukowania dla rodziców. Jak miałbym to zrobić?
Jaka jest różnica pomiędzy: class Child(SomeBaseClass): def __init__(self): super(Child, self).__init__() i: class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self) Widziałem, że jestem superczęsto używany na zajęciach z jednym dziedzictwem. Rozumiem, dlaczego miałbyś używać go w wielokrotnym dziedzictwie, ale nie jestem pewien, jakie są zalety korzystania z tego w takiej sytuacji.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.