Van icon

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

    }