Você está na página 1de 9

Herencia

La herencia nos permite derivar una


nueva clase a partir de una existente
La clase existente es conocida como
clase madre, o superclase, o clase
base
La clase derivada tambin es
conocida como clase hija o subclase.

La herencia es la columna vertebral de la POO. Permite a los


programadores crear una jerarqua entre un grupo de clases que tienen
caractersticas similares.
La herencia es una forma de reutilizacin de cdigo.

Herencia en Java
Como su nombre lo implica, la clase hija hereda
caractersticas de la clase madre.
Esto es, la clase hija hereda los mtodos y datos
definidos para la clase madre.
Para ajustar una clase derivada, el programador
puede agregar nuevos datos y/o mtodos, o
puede modificar los heredados.
class Animal
comer()
dormir()
reproducirse()
class Mamifero
reproducirse()
class Gato
dormir()
cazarRaton()
maullar()

Animal
Mamifero

Gato Gardfield
comer()
reproducirse()
dormir()
cazarRaton()
maullar()

Gato

Herencia Simple vs. Herencia


Mltiple
Java no soporta herencia mltiple

Todas las clases en Java descienden de la clase Object. La clase


Object no tiene una superclase
Podemos forzar a que las clases, que no estn relacionadas por la herencia,
implementen un conjunto de mtodos mediante el uso de interfaces.

Declarando una subclase


En java usamos la palabra reservada extends para establecer una
relacin de herencia
Sintxis:
[modificador de clase] class identificador_subclase extends
identificador_superclase
public class Animal {}

Animal
Mamifero

public class Mamifero extends Animal {


Gato
//cdido especfico de Mamifero
}
Mamfero es un tipo de Animal
public class Gato extends Mamifero{
// cdido especfico de Gato
}

Gato es un tipo de Mamifero

Declarando una subclase


public class Animal {
public void comunicar() {
System.out.println(Animal generico");
}
}

public class Can extends Animal {


public void comunicar() {
System.out.println("Woof!!");
}
}

public class Gato extends Animal {


public void comunicar() {
System.out.println(Meow!!");
}
}

Redefiniendo (overriding)
Mtodos
Cuando una clase derivada define un mtodo con el mismo

nombre y firma que un mtodo de su clase base, decimos que la


versin de la clase derivada redefine la versin de la clase.
El nuevo mtodo debe tener la misma firma que el mtodo de la
clase base, pero puede tener diferente cuerpo.
El tipo del objeto que est en ejecucin determinar cul
versin de mtodo ser el invocado.
class Animal
comer()
Redefinicin
dormir()
reproducirse()
class Mamifero
reproducirse()
class Gato
dormir()
cazarRaton()
maullar()

Gato Gardfield
comer()
reproducirse()
dormir()
cazarRaton()
maullar()

Overloading vs. Overriding


Overloading deals with Overriding deals with
multiples methods in
two methods, one in a
the same class with the parent class and one in
same name but
a child class, that have
different signatures
the same signature
Overloading lets you
Overriding lets you
define a similar
define a similar
operation in different
operation in different
ways for different data ways for different object
types

Overloading vs. Overriding


Inheritance
Method(x)

superclass

subclass

Method(x)

Method(x)

Method(x,y)
Subsubclass

Polymophism:Override,Overload

Prctica de Herencia (1)


Disea e implementa un conjunto de clases que definan la jerarqua de clases mostrada en la
figura, haciendo lo siguiente:
Define cada clase tomando en cuenta las caractersticas (velocidad, potencia, nmero de
pasajeros, costo, consumo de combustible, etc.)
Imprime mensajes apropiados que describan la funcionalidad (obtener velocidad, obtener potencia,
calcular tiempo de recorrido, etc).
Usa los constructores apropiados de forma que una clase derivada invoque al constructor de su
clase base.
Crea una clase que use las instancias de la jerarqua de clases.

Você também pode gostar