Constructores y herencia en Java

Curso de Java

11.  
22.  

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

public class Main{
 public static void main(String[] args) {
  new Hijo();
 }
}

class Hijo extends Padre{
 public Hijo() {
  System.out.println("Se ejecuta el hijo");
 }
}

class Padre{
 public Padre(){
  System.out.println("Se ejecuta el padre");
 } 
}

Output:
Se ejecuta el padre
Se ejecuta el hijo

¿Qué se verá por pantalla al ejecutar el siguiente código?

public class Main{
 public static void main(String[] args) {
  Hijo a = new Hijo("hola");
  a.mostrarMensaje();
 }
}

class Hijo extends Padre{
 Hijo(String mensaje){
  super(mensaje);
 }
}

class Padre{
 String mensaje;
 public Padre(String mensaje){

 } 

 void mostrarMensaje(){
  System.out.println(mensaje);
 }
}
  • super sin paréntesis es una palabra clave que nos permite acceder a los métodos y propiedades de la clase padre.
  • super con paréntesis es una palabra clave que nos permite ejecutar el constructor de la clase padre.
  • this sin paréntesis es una palabra clave que nos permite acceder a los métodos y propiedades de la propia clase.
  • this con paréntesis es una palabra clave que nos permite llamar a otro constructor de la propia clase, diferente del constructor desde el que se ha invocado.

Todas las clases que heredan, tienen un constructor que comienza por el método super();. Si yo no escribo este método, el compilador de java lo escribe automáticamente llamando al constructor vacío del padre. Esto puede dar problemas de compilación si el padre no tiene un constructor vacío.

public class MainConError{
 public static void main(String[] args) {
  new Hijo();
 }
}

class Hijo() extends Padre{
 public Hijo(){
  System.out.println("Se ejecuta el hijo");
 }
}

class Padre{
 public Padre(String parametro){
  System.out.println("Se ejecuta el padre");
 } 
}

Ejercicios herencia

1. Desarrolle una aplicación que contenga las siguientes clases:

Desarrolle una aplicación que contenga las siguientes clases:

Constructores y herencia en Java 1

El constructor de la clase Persona debe incrementar en una unidad la variable numInstancias.

Desarrolle una clase con el nombre Main, que contenga un método public static void main(String args[]), que al ejecutarse cree dos instancias de empleado y dos de cliente e imprima el total de instancias de persona creadas.

2. Implemente las clases del siguiente diagrama.

Constructores y herencia en Java 2

Desarrolle una clase con el nombre Main, que contenga un método public static void main(String args[]), que al ejecutarse genere una instancia de Vaca, Cerdo y Gallina pasándoles en el constructor el sonido que deben emitir («muuuuuu«, «oinkoink«, «kokoroko«, por ejemplo). Sobreescribir comunicarse de cada clase para que cada una muestre un mensaje distinto (puede ser algo del tipo )

System.out.println("Cuando la vaca pone tiene leche hace " + sonido);

Llamar a los métodos comunicarse() de cada una de las tres instancias.

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.