2010-01-16 25 views
9

Desde un punto de vista OOP, ¿hay alguna diferencia entre una clase derivada y una clase heredada? ¿O es simplemente terminología?OOP Diferencia entre una clase derivada y una clase heredada?

+0

duplicado exacto de su pregunta anterior. –

+0

@David - gracias Ok, eliminé la otra pregunta, debo haber enviado dos veces ... –

Respuesta

13

Al usar la herencia, la clase heredada se denomina clase base, y la clase heredada se denomina clase derivada .

+1

Completamente cambiar el texto de su respuesta para reflejar la respuesta de otro usuario no se considera una buena forma aquí en SO. –

+0

@Neil: al contrario. Editando su respuesta para que sea la mejor respuesta posible es de lo que SO se trata. Por supuesto que plagiar no es bueno, pero creo que la edición es una mejora basada en tu respuesta, no una copia descarada, especialmente porque tu respuesta fue específica de C++ (no fue necesario especificarla, pero lo hiciste) –

+0

@Vinko Había una necesidad de hacerlo específico: diferentes idiomas usan nomenclaturas diferentes. Por ejemplo, un programador de Smalltalk hablaría de superclase y subclase en lugar de base y derivada. –

5

El término clase derivada se prefiere el lenguaje C++ para una clase que hereda de otra clase, que en el lenguaje C++ que se denomina una clase base de. Entonces en C++ los términos sobre los que preguntas son idénticos.

2

La respuesta de Neil me confundió un poco, así que revisé un poco public sources.

Considérese una clase Base y una Sub Clase (SubClass extends BaseClass en la terminología de Java), que

  • la Sub Clase deriva base de la Clase (Clase Sub es un clase derivada de Clase base) y
  • Sub Clase hereda de Clase base (base de la Clase es un/el clase heredada de la clase Sub)

lo tanto, en mi opinión, tanto en términos definen la misma relación entre las clases pero desde diferentes perspectivas.

+0

El término subclase no se usa comúnmente en C++, no sé sobre Java, y el OP no preguntó al respecto. –

+2

Pero él no pidió C++ tampoco ... –

0

terminología herencia por Bertran Meyer (Object-Oriented Software Construction, p.464):

convenciones básicas y la terminología

Los siguientes términos serán útiles además de “heredero” y "padre".

A descendiente de una clase C es cualquier clase que hereda directamente o indirectamente de C, incluyendo C sí mismo. (Formalmente: o bien C o, de forma recursiva, descendiente de una heredera de C.) Un antepasado de C es una clase A tal que C es un descendiente de A .

En la literatura también se encontrará con los términos “subclase” y “superclase”, pero que se mantenga alejado de ellos, ya que son ambiguos; a veces "subclase" significa heredero (descendiente inmediato), a veces se usa en el sentido más general de descendiente apropiado , y no siempre está claro cuál. Además, veremos que la connotación "subconjunto" de esta palabra no siempre está justificada.

0

tal vez interesante, si se reemplaza un método, en Delphi se escribe:

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

en lugar de

base.BaseImplementation(); // C# 
Cuestiones relacionadas