package com.trifulcas.repaso.oop;
// La herencia se implementa con extends
// AlumnoIntercambio deriva de Alumno
// Alumno es la superclase o clase madre
// y AlumnoIntercambio la clase hija o derivada o subclase
public class AlumnoIntercambio extends Alumno {
private String paisOrigen;
public String getPaisOrigen() {
return paisOrigen;
}
public void setPaisOrigen(String paisOrigen) {
this.paisOrigen = paisOrigen;
}
public AlumnoIntercambio(String nombre, int nota, String email) {
super(nombre, nota, email);
}
public void saludo() {
// Recordad que las propiedades private no son visibles desde
// la clase derivada, esto da error
// System.out.println("hola "+nombre);
System.out.println("hola "+getNombre());
}
// Sobreescribir los métodos que heredo de la clase madre
// Y tener otra implementación, en este caso el toString
@Override
public String toString() {
// La palabra clave super hace referencia a la clase madre
// Aquí lo usamos para acceder al método toString de Alumno
return "AlumnoIntercambio [paisOrigen=" + paisOrigen + ", " + super.toString() + "]";
}
}
package com.trifulcas.repaso.oop;
public class TestOOP {
public static void main(String[] args) {
AlumnoIntercambio john=new AlumnoIntercambio("John",6,"eee");
// Al derivar de alumno John tiene todas las propiedades
// Y métodos que tiene alumno
System.out.println(john.getAprobado());
john.setMail("pepe@pee.com");
System.out.println(john);
// La subclase puede tener sus propios métodos y propiedades
john.setPaisOrigen("Bélgica");
System.out.println(john);
Alumno eva=new Alumno("Eva",6,"wwww");
// La superclase no tiene las propiedades de las subclases
// Esto da error eva.getPaisOrigen()
// Yo puedo definir una variable como la clase madre
// Pero instanciarla como la clase hija
// Para qué? Polimorfismo
Alumno pep=new AlumnoIntercambio("pep",4,"ww");
}
}