Articles of dell’ereditarietà

Sovrascrivere la funzione di sovraccarico di una base in C ++

Possibile duplicato: Risoluzione di sovraccarico C ++ Mi sono imbattuto in un problema in cui, dopo che la mia class aveva annullato una funzione della sua class base, tutte le versioni sovraccaricate delle funzioni venivano nascoste. È questo di progettazione o sto facendo qualcosa di sbagliato? Ex. class foo { public: foo(void); ~foo(void); virtual void […]

Un’interfaccia può estendere più interfacce in Java?

Un’interfaccia può estendere più interfacce in Java? Questo codice sembra valido nel mio IDE e compila: interface Foo extends Runnable, Set, Comparator { } ma avevo sentito che l’ereditarietà multipla non era permessa in Java. Perché sembra esserci un’eccezione per le interfacce?

Un modo per trasmettere un tipo di base a un tipo derivato

Non sono sicuro se questa sia una cosa strana da fare o no, o se è un po ‘come l’odore del codice … ma mi stavo chiedendo se ci fosse un modo (una sorta di modello di oop sarebbe bello) per “lanciare” un tipo di base a una forma del suo tipo derivato. So che […]

Ereditarietà in Java: la creazione di un object della sottoclass richiama anche il costruttore della superclass. Perché esattamente?

Ho una domanda sull’ereditarietà in Java. Ho due classi A e B , e la class B, eredita da A: public class A { public A() { System.out.println(“Hi!”); } } public class B extends A { public B() { System.out.println(“Bye!”); } public static void main(String[] args) { B b = new B(); } } Quando […]

Come utilizzare i costruttori della class base e l’operatore di assegnazione in C ++?

Ho una class B con un insieme di costruttori e un operatore di assegnazione. Ecco qui: class B { public: B(); B(const string& s); B(const B& b) { (*this) = b; } B& operator=(const B & b); private: virtual void foo(); // and other private member variables and functions }; Voglio creare una class ereditaria […]

Errore C #: il genitore non contiene un costruttore che accetta 0 argomenti

Il mio codice è public class Parent { public Parent(int i) { Console.WriteLine(“parent”); } } public class Child : Parent { public Child(int i) { Console.WriteLine(“child”); } } Sto ottenendo l’errore: Il genitore non contiene un costruttore che accetta 0 argomenti. Capisco il problema è che il Parent non ha costruttore con 0 argomenti. Ma […]

In che modo l’ereditarietà virtuale risolve l’ambiguità “diamante” (eredità multipla)?

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<eat(); } Capisco il problema dei diamanti, e al di sopra del codice non ho questo problema. […]

Perché non dovresti estendere JFrame e altri componenti?

Ho visto questo venire qui un paio di volte, ma nei post che ho visto, nessuno lo ha spiegato. Perché non dovrei estendere JFrame (o qualsiasi componente)? Ci sono condizioni in cui dovrei estendere un componente, o è una regola ferma che non lo fai?

Perché le classi java non ereditano annotazioni dalle interfacce implementate?

Ho usato l’AOP di Guice per intercettare alcune chiamate di metodo. La mia class implementa un’interfaccia e vorrei annotare i metodi dell’interfaccia in modo che Guice possa selezionare i giusti metodi. Anche se il tipo di annotazione è annotato con l’annotazione ereditata, la class di implementazione non eredita l’annotazione come indicato nel documento java di […]

Ereditarietà rispetto all’aggregazione

Ci sono due scuole di pensiero su come estendere, migliorare e riutilizzare al meglio il codice in un sistema orientato agli oggetti: Ereditarietà: estendere le funzionalità di una class creando una sottoclass. Sostituisci i membri della superclass nelle sottoclassi per fornire nuove funzionalità. Rendi i metodi astratti / virtuali per forzare le sottoclassi in “fill-in-the-blanks” […]