JAVA Herencia

Agenda

- Herencia
   - UML

   - Definición
   - Superclase y subclases
   - Ventajas

- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
   - Definición
   - Método abstracto
   - Constructores

UML

Animal

ubicacion: String

...

comer(): void

dormir(): void

caminar(): void

hacerRuido(): void

Perro

hacerRuido(): void

Gato

hacerRuido(): void

Superclase

SubClase

Herencia - Definición

- 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.

Herencia - Superclase y Subclase

- 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.

Herencia - Ventajas

- 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.

Agenda

- Herencia
   - UML
   - Definición
   - Superclase y subclases
   - Ventajas

- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
   - Definición
   - Método abstracto
   - Constructores

Herencia y Abstracción

- 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.

Agenda

- Herencia
   - UML
   - Definición
   - Superclase y subclases
   - Ventajas

- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
   - Definición
   - Método abstracto
   - Constructores

Herencia en JAVA

public abstract class Animal{

 

   private String ubicacion;

   ...

 

   public abstract void hacerRuido();

 

   public void comer{

      System.out.println("Soy un animal y estoy comiendo");

   }

}

Herencia en JAVA

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!");

   }

}

Herencia en JAVA

public class Animal{

 

   private String ubicacion;

   ...

 

   public void comer{

      System.out.println("Soy un animal y estoy comiendo");

   }

}

Herencia en JAVA

public class Perro extends Animal{

   

   public void comer{

      System.out.println("Soy un Perro y estoy comiendo");

   }

}

Agenda

- Herencia
   - UML
   - Definición
   - Superclase y subclases
   - Ventajas

- Herencia y Abstracción
- Herencia en Java
- Clase abstracta
   - Definición
   - Método abstracto
   - Constructores

Clase Abstracta - Definición

- 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

Clase Abstracta - Método 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

Clase Abstracta - Constructores?

- 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();

Made with Slides.com