JAVA ABSTRACT CLASS
Links
//ABSTRAC CLASS
/*
Se usa para
Interfaz: pones definiciones
Clase abstracta: Puedes crear metodos
*/
public abstract class AbstractClass {
public String nombre = "por defecto";
public void visualiza(){
System.out.println("Nombre = "+this.nombre);
}
public abstract void cambiaNombre(String nuevo);
public class Hijo1 extends AbstractClass{
@Override
public void cambiaNombre(String nuevo) {
String nombre = "Hijo1 "+nuevo;
}
public void metodoNoAparece(){}
}
public class Hijo2 extends AbstractClass{
@Override
public void cambiaNombre(String nuevo) {
String nombre = "Hijo2 "+nuevo;
}
}
public class Aplicacion{
public Aplicacion() {
Hijo1 a = new Hijo1();
Hijo2 b = new Hijo2();
a.cambiaNombre("a");
b.cambiaNombre("b");
ver(a);
ver(b);
}
public void ver(AbstractClass param){
param.visualiza();
//No se puede usar ya que el parámetro es una clase Abstracta
//no un objeto Hijo1
//param.metodoNoAparece();
//Asi si porque hacemos un cast de Abstract Class a Hijo1
//Hijo 1 si tiene el método
((Hijo1) param).metodoNoAparece();
}
}
}