Cecha niektórych zorientowanych obiektowo języków programowania komputerowego, w których klasa może dziedziczyć zachowania i cechy z więcej niż jednej nadklasy lub klasy bazowej.
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 wielokrotnego dziedziczenia …
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 Second(object): def __init__(self): print "second" class Third(First, Second): def __init__(self): super(Third, self).__init__() print …
Ponieważ wielokrotne dziedziczenie jest złe (komplikuje to źródło), C # nie zapewnia takiego wzorca bezpośrednio. Ale czasami pomocne byłoby posiadanie tej umiejętności. Na przykład jestem w stanie zaimplementować brakujący wzorzec wielokrotnego dziedziczenia za pomocą interfejsów i trzech takich klas: public interface IFirst { void FirstMethod(); } public interface ISecond { …
Powiedzmy, że mam scenariusz wielokrotnego dziedziczenia: class A(object): # code for A here class B(object): # code for B here class C(A, B): def __init__(self): # What's the right code to write here to ensure # A.__init__ and B.__init__ get called? Są dwa typowe podejścia do pisania C„s __init__: (w …
Próbując w pełni zrozumieć, jak rozwiązać wiele problemów z dziedziczeniem w Javie, mam klasyczne pytanie, które muszę wyjaśnić. Powiedzmy mam klasę Animalto ma sub klas Birdi Horsei muszę dokonać klasy Pegasus, która rozciąga się od Birda Horseponieważ Pegasusjest zarówno ptaków i koń. Myślę, że to klasyczny problem z diamentami. Z …
Mam ogólny interfejs public interface Consumer<E> { public void consume(E e); } Mam klasę, która zużywa dwa typy obiektów, więc chciałbym zrobić coś takiego: public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple> { public void consume(Tomato t) { ..... } public void consume(Apple a) { ...... } } Najwyraźniej nie mogę tego …
Doszedłem do punktu, w którym muszę mieć pewne podstawowe dziedziczenie wielokrotne w JavaScript. (Nie jestem tutaj, aby dyskutować, czy to dobry pomysł, czy nie, więc prosimy o zachowanie tych komentarzy dla siebie). Chcę tylko wiedzieć, czy ktoś próbował tego dokonać z jakimkolwiek (lub nie) sukcesem i jak sobie z tym …
Czy interfejs może rozszerzyć wiele interfejsów w Javie? Ten kod wygląda na prawidłowy w moim IDE i kompiluje się: interface Foo extends Runnable, Set, Comparator<String> { } ale słyszałem, że wielokrotne dziedziczenie nie jest dozwolone w Javie. Dlaczego wydaje się, że istnieje wyjątek dla interfejsów?
Widzę ludzi, którzy cały czas pytają, czy dziedziczenie wielokrotne powinno zostać uwzględnione w następnej wersji C # lub Javy. Osoby korzystające z C ++, które mają tyle szczęścia, że mają taką możliwość, mówią, że to tak, jakby dać komuś linę, aby w końcu się powiesić. O co chodzi z wielokrotnym …
Wiem, że dziedziczenie wielokrotne nie jest dozwolone w Javie i C #. Wiele książek po prostu mówi, że wielokrotne dziedziczenie jest niedozwolone. Ale można to zaimplementować za pomocą interfejsów. Nic nie jest omawiane na temat tego, dlaczego jest to niedozwolone. Czy ktoś może mi dokładnie powiedzieć, dlaczego jest to zabronione?
class A { public: void eat(){ cout<<"A";} }; class B: virtual public A { public: void eat(){ cout<<"B";} }; class C: virtual public A { public: void eat(){ cout<<"C";} }; class D: public B,C { public: void eat(){ cout<<"D";} }; int main(){ A *a = new D(); a->eat(); } Rozumiem …
Mam 2 klasy, jedna zawiera MethodA, a druga zawiera MethodB. Więc w nowej klasie muszę zastąpić metody MethodA i MethodB. Jak więc osiągnąć wielokrotne dziedziczenie w celu C? Jestem trochę zdezorientowany ze składnią.
Jeśli mam dwa interfejsy, oba całkiem różne w swoich celach, ale z tą samą sygnaturą metody, jak zrobić klasę implementującą obie bez konieczności pisania jednej metody, która służy do obu interfejsów i pisania zawiłej logiki w metodzie implementacja, która sprawdza, dla jakiego typu obiektu jest wykonywane wywołanie i wywołuje odpowiedni …
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.