2010-01-16 19 views
9

Da un punto di vista OOP c'è qualche differenza tra una classe derivata e una classe ereditata? O è semplicemente terminologia?OOP Differenza tra una classe derivata e una classe ereditata?

+0

duplicato esatto della tua domanda precedente. –

+0

@David - grazie Ok, ho cancellato l'altra domanda, devo aver inviato due volte .... –

risposta

13

Quando si utilizza l'ereditarietà, la classe ereditata viene chiamata classe base e la classe ereditaria viene chiamata classe derivata .

+1

Completamente cambiando il testo della tua risposta per rispecchiare la risposta di un altro utente non è considerata una buona forma qui su SO. –

+0

@Neil: al contrario. Modificare la tua risposta per renderla la migliore risposta possibile è ciò che SO è tutto. Ovviamente il plagio non è bello, ma trovo la modifica un miglioramento basato sulla tua risposta, non una copia sfacciata, soprattutto perché la tua risposta era specifica per C++ (non c'era bisogno di renderla specifica, ma l'hai fatto.) –

+0

@Vinko Era necessario renderlo specifico: lingue diverse usano nomenclature diverse. Ad esempio, un programmatore Smalltalk parlerebbe di superclasse e sottoclasse piuttosto che di base e derivate. –

5

Il termine classe derivata è preferito C++ gergo per una classe che eredita da un'altra classe, che in C++ gergo viene chiamata classe di base. Quindi in C++ i termini che chiedi sono identici.

2

La risposta di Neil mi ha confuso un po ', quindi ho controllato un po' di public sources.

consideri una classe Base e Sub Class (SubClass extends BaseClass nella terminologia Java), che

  • il Sotto Classe deriva Classe Base (classe secondaria è un classe derivata di Base Class) e
  • la Sottoclasse eredita da Classe base (classe base è un/il classe ereditata della classe Sub)

Quindi, a mio parere entrambi i termini definiscono la stessa relazione tra le classi, ma da prospettive diverse.

+0

Il termine sottoclasse non è comunemente usato in C++ - Non so su Java - e l'OP non ha chiesto informazioni a riguardo. –

+2

Ma lui non ha chiesto il C++ neanche ... –

0

Inheritance terminologia da Bertran Meyer (Object-Oriented Software Construction, p.464):

convenzioni di base e la terminologia

I seguenti termini saranno utili in aggiunta a “erede” e "genitore".

Un discendente di una classe C è qualsiasi classe che eredita direttamente o indirettamente da C, compresi C stessa. (Formalmente: o C o, ricorsivamente, un discendente di un erede di C.) Un antenato di C è una classe Un tale che C è un discendente di A .

In letteratura si incontrano anche i termini “sottoclasse” e “superclasse”, ma ci sarà stare lontano da loro perché sono ambigue; a volte "sottoclasse" significa erede (discendente immediato), a volte è usato nel senso più generale del discendente corretto, e non è sempre chiaro quale. Inoltre, vedremo che la connotazione "sottoinsieme" di questa parola non è sempre giustificata.

0

forse interessante, se si esegue l'override un metodo, in Delphi si scrive:

inherited; // so "inherited" is the base class 

invece di

base.BaseImplementation(); // C# 
Problemi correlati