Constructores y herencia

Contactar con el profesor

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");
	}	
}
Ver Video

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 ejecutar el constructor de la propia clase.

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

← Herencia
Polimorfismo →

Aviso Legal | Política de privacidad