- Herencia
- UML
- Definición
- Superclase y subclases
- Ventajas
- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
- Definición
- Método abstracto
- Constructores
Animal
ubicacion: String
...
comer(): void
dormir(): void
caminar(): void
hacerRuido(): void
Perro
hacerRuido(): void
Gato
hacerRuido(): void
Superclase
SubClase
- La herencia es un mecanismo que permite la definición de una clase a partir de la definición de otra ya existente.
- Permite compartir automáticamente métodos y características entre clases.
- Está fuertemente ligada a la reutilización de código.
- El concepto de herencia conduce a una estructura jerárquica de clases o estructura de árbol.
- En la estructura jerárquica, cada clase tiene sólo una clase padre → SUPERCLASE.
- Una superclase puede tener cualquier número de subclases.
- La clase hija de una superclase se llama SUBCLASE.
- Una subclase puede tener sólo una superclase.
- En el ejemplo:
- Animal es la superclase de Gato y Perro.
- Gato y Perro son subclases de Animal.
- Evitar la duplicidad y favorecer la reutilización de código (las subclases utilizan el código de la superclase).
- Facilitar el mantenimiento de las aplicaciones que diseñamos.
- Facilitar la extensión de las aplicaciones que diseñamos.
- Herencia
- UML
- Definición
- Superclase y subclases
- Ventajas
- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
- Definición
- Método abstracto
- Constructores
- Se puede pensar en una jerarquía de clases como la definición de conceptos abstractos en lo alto de la jerarquía.
- Las subclases no están limitadas al estado y comportamiento provisto por la superclase → pueden agregar variables y métodos además de los que ya heredan.
- Las clases hijas también pueden sobreescribir los métodos que heredan.
- Herencia
- UML
- Definición
- Superclase y subclases
- Ventajas
- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
- Definición
- Método abstracto
- Constructores
public abstract class Animal{
private String ubicacion;
...
public abstract void hacerRuido();
public void comer{
System.out.println("Soy un animal y estoy comiendo");
}
}
public class Perro extends Animal{
@Override
public void hacerRuido(){
System.out.println("guau");
}
}
public class Gato extends Animal{
@Override
public void hacerRuido(){
System.out.println("miau!");
}
}
public class Animal{
private String ubicacion;
...
public void comer{
System.out.println("Soy un animal y estoy comiendo");
}
}
public class Perro extends Animal{
public void comer{
System.out.println("Soy un Perro y estoy comiendo");
}
}
- Herencia
- UML
- Definición
- Superclase y subclases
- Ventajas
- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
- Definición
- Método abstracto
- Constructores
- Es similar a una clase concreta: posee atributos y métodos pero tiene una condición:
- Al menos uno de sus métodos debe ser abstracto
- Un método abstracto se caracteriza por dos detalles:
- Está precedido por la palabra clave abstract.
- No tiene cuerpo y su encabezado termina con punto y coma.
- Si un método se declara como abstracto, se debe marcar la clase como abstracta → No puede haber métodos abstractos en una clase concreta.
- Los métodos abstractos deben implementarse en
las clases concretas (subclases). → @Override
- Las clases abstractas no se pueden instanciar!!!
public abstract class Animal {
....
public Animal() {}
public abstract void hacerRuido();
}
- Es posible definir constructores en las superclases, pero no es posible crear instancias.
Animal animal = new Animal();