Dobrze rozumiem większość teorii OO, ale jedną z rzeczy, która mnie bardzo dezorientuje, są wirtualne niszczyciele. Myślałem, że destruktor zawsze jest wywoływany bez względu na wszystko i dla każdego obiektu w łańcuchu. Kiedy masz je uczynić wirtualnymi i dlaczego?
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 …
Jeśli chodzi o Javę, gdy ktoś pyta: co to jest polimorfizm? Czy przeciążenie lub zastąpienie byłoby akceptowalną odpowiedzią? Myślę, że jest w tym coś więcej. JEŚLI masz abstrakcyjną klasę podstawową, która zdefiniowała metodę bez implementacji i zdefiniowałeś tę metodę w podklasie, czy to wciąż jest nadrzędne? Myślę, że przeciążenie nie …
Zadano mi to pytanie na zakończenie dzisiejszego egzaminu z otwartej książki i zgubiłem się. Czytałem Head first Javai obie definicje wydawały się być dokładnie takie same. Zastanawiałem się tylko, jaka jest GŁÓWNA różnica w moim własnym umyśle. Wiem, że istnieje wiele podobnych pytań, ale nie widziałem żadnego, które zapewnia ostateczną …
Czy źle jest pisać: class A { public: virtual ~A() = 0; }; dla abstrakcyjnej klasy bazowej? Przynajmniej to kompiluje się w MSVC ... Czy ulegnie awarii w czasie wykonywania?
Wiesz, jak w Eclipse naciśnięcie przycisku F3spowoduje przejście do jej deklaracji? Cóż, mam metodę, która jest częścią interfejsu; kliknięcie F3tego w naturalny sposób przenosi mnie do interfejsu deklarowania. Oczywiście istnieje obiekt implementujący ten interfejs i tutaj metoda jest faktycznie implementowana. Chcę, aby po naciśnięciu F3przejść do implementacji, a nie do …
Piszę moduł i chcę mieć ujednoliconą hierarchię wyjątków dla wyjątków, które może on wywołać (np. Dziedziczenie z FooErrorklasy abstrakcyjnej dla wszystkich foowyjątków specyficznych dla modułu). Pozwala to użytkownikom modułu na wychwycenie tych wyjątków i wyraźną obsługę ich w razie potrzeby. Ale wiele wyjątków zgłoszonych z modułu jest zgłaszanych z powodu …
Mam dwie klasy Java: B, która rozszerza inną klasę A w następujący sposób: class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { /* Another code */ } } Chciałbym zadzwonić pod numer A.myMethod()nadawcy B.myMethod(). Pochodzę ze świata C …
AFAIK: C ++ udostępnia trzy różne typy polimorfizmu. Funkcje wirtualne Przeciążanie nazw funkcji Przeciążanie operatorów Oprócz powyższych trzech typów polimorfizmu istnieją inne rodzaje polimorfizmu: w czasie wykonywania czas kompilacji polimorfizm ad hoc parametryczny polimorfizm Wiem, że polimorfizm w czasie wykonywania można osiągnąć za pomocą funkcji wirtualnych, a polimorfizm statyczny można …
Czy jest jakaś różnica między List<Map<String, String>> i List<? extends Map<String, String>> ? Jeśli nie ma różnicy, jakie są korzyści z używania ? extends?
Jaka jest zaleta uczynienia metody prywatnej wirtualną w C ++? Zauważyłem to w projekcie C ++ open source: class HTMLDocument : public Document, public CachedResourceClient { private: virtual bool childAllowed(Node*); virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&); };
Wykonaj następujące czynności: class A {} class B : A {} class C { C() { var b = new B(); Foo(b); Foo2(ref b); // <= compile-time error: // "The 'ref' argument doesn't match the parameter type" } void Foo(A a) {} void Foo2(ref A a) {} } Dlaczego występuje …
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.