Dlaczego wolisz kompozycję niż dziedziczenie? Jakie są kompromisy dla każdego podejścia? Kiedy wybrać dziedziczenie zamiast
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.
Dlaczego wolisz kompozycję niż dziedziczenie? Jakie są kompromisy dla każdego podejścia? Kiedy wybrać dziedziczenie zamiast
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...
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,...
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
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...
Jaka jest różnica między public, privatei protecteddziedziczenia w C ++? Wszystkie pytania, które znalazłem w SO, dotyczą konkretnych
W „ Programming Python ” Mark Lutz wspomina o „mixinach”. Pochodzę z środowisk C / C ++ / C # i nie słyszałem wcześniej tego terminu. Co to jest mixin? Czytając między wierszami tego przykładu (do którego podłączyłem, ponieważ jest dość długi), przypuszczam, że jest to przypadek użycia...
Jestem całkiem nowy w programowaniu obiektowym w języku Python i mam problemy ze zrozumieniem super()funkcji (nowych klas stylów), szczególnie jeśli chodzi o wielokrotne dziedziczenie. Na przykład, jeśli masz coś takiego: class First(object): def __init__(self): print "first" class...
Jak skonfigurować klasę reprezentującą interfejs? Czy to tylko abstrakcyjna klasa
Ten rysunek ponownie pokazuje, że każdy obiekt ma prototyp. Funkcja konstruktora Foo ma również swoją własną__proto__ funkcję Function.prototype, która z kolei odwołuje się również poprzez swoją __proto__właściwość do Object.prototype. Zatem powtórzmy, Foo.prototype jest tylko jawną właściwością...
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...
Ktoś wspomniał o tym w IRC jako problem
Proszę wyjaśnić w łatwym do zrozumienia języku lub link do jakiegoś
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...
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...
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ś...
Jeśli klasa Bi klasa Crozszerzają klasę, Aa ja mam obiekt typu Blub C, jak mogę ustalić, który typ jest
Jaka jest różnica? Kiedy powinienem użyć które? Dlaczego jest ich tak
W jednym z moich wywiadów poproszono mnie o wyjaśnienie różnicy między klasą interfejsu a klasą abstrakcyjną . Oto moja odpowiedź: Metody interfejsu Java są domyślnie abstrakcyjne i nie mogą mieć implementacji. Klasa abstrakcyjna Java może mieć metody instancji, które implementują domyślne...
To może być ogólne pytanie dotyczące OOP. Chciałem dokonać ogólnego porównania interfejsu z klasą abstrakcyjną na podstawie ich użycia. Kiedy chciałoby się użyć interfejsu, a kiedy klasy abstrakcyjnej