Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Herencia
Clases tienen la capacidad de heredar caractersticas de otras clases Caractersticas: Campos y mtodos (incluyendo constructores) Extender una clase Reutilizacin cdigo a nivel de definicin de tipos de objetos Clase Padre superclase (base class) Clase Hijo subclase (derived class)
Herencia
Una subclase puede modificar o extender una superclase en por lo menos tres formas
(1) Declarando nuevos campos (2) Declarando nuevos mtodos (3) Sobrescribiendo mtodos heredados con nuevas implementaciones.
Constructores
public size head tail } TailList() { = 0; /* Instrucciones del = null; constructor de SList */ = null;
Constructores
public size head tail } TailList() { = 0; /* Instrucciones del = null; constructor de SList */ = null;
super.
Adems de utilizarlo como llamada al constructor de la superclase, super puede ser utilizado para hacer referencia a mtodos de la superclase.
public void insertFront(Object dato) { super.insertFront(dato); if (size == 1) { tail = head; } }
Llama a ejecutar al metodo insertFront de la superclase
protected
protected es un nivel de proteccin entre public y private Un campo o mtodo protected es visto por la clase y por todas sus subclases, pero no por otras clases. Un campo private no es visible para ninguna clase, ni siquiera para las subclases y por lo tanto no puede ser heredado.
Protected
public class SList { private SNode head; private int size; [ implementacin de constructores y mtodos ] } public class SList { protected SNode head; protected int size; [ implementacin de constructores y mtodos ] }
Variables y Referencias
Las variables de tipo superclase pueden hacer referencia a objetos de tipo subclase, pero no al revs.
Object o = new Integer(1); Object o = Hola; SList s = new TailList(); //BIEN! //ERROR!
Herencia
Los mtodos propios de una subclase no pueden ser llamados desde una variable de tipo superclase
Object o = new Integer(3); o.intValue(); //ERROR! TailList t = new TailList(); t.metodoTailList(); s.metodoTailList(); //BIEN!! //ERROR!! SList s = new TailList();
Herencia
Aqu se aplica el uso de CASTING
SList s = new SList(); TailList t = new TailList(); s = t; TailList x = s; x = (TailList)s; //BIEN! //ERROR! //BIEN!
instanceof
Object o = Hola; Integer i = (Integer)o; //ClassCastException if (o instanceof Integer) { Integer i = (Integer)o; //BIEN! } s = new SList(); t = (TailList)s; //ClassCastException if (s instanceof TailList) { t = (TailList)s; //BIEN }