2. Clases Abstractas
Una clase abstracta es aquella cuyo
único propósito es ser heredada
(extendida).
public abstract class List {
protected int size;
public int size() {
return this.size;
}
public abstract void insertFront(Object o);
}
3. Clases Abstractas
Las clases abstractas no permiten crear
objetos directamente.
List milista;
milista = new List(); //ERROR!
4. Método abstracto
Un método abstracto no tiene
implementación
su propósito es garantizar que cualquier
clase que herede a la clase abstracta lo
implemente.
Para el ejemplo cualquier clase que herede
la clase List deberá implementar un método
insertFront.
5. public class SLista extends List {
protected SNodo head;
// size es heredado
public void insertFront(Object o) {
head = new SNodo(dato,head);
size++
}
// método length es heredado
}
List l = new SLista();
7. Java Interfaces
Una Java Interface es como una clase
abstracta, pero con las siguientes
diferencias:
En Java una subclase puede heredar
propiedades de solo una clase, sin embargo
puede IMPLEMENTAR cuantas interfaces
quiera
Una interfaz no puede implementar
métodos, ni tampoco declarar campos que
no sean de tipo final static.
8. Interfaces
- Una clase puede implementar más de un interfaz en Java, pero
sólo puede extender una clase.
(Es lo más parecido que tiene Java a la herencia múltiple, que de
clases normales está prohibida.)
- Podemos declarar variables del tipo de clase del interfaz, pero para
inicializarlas tendremos que hacerlo de una clase que lo
implemente.
9. Ejemplo
public interface Inserts {
public void insertEnd(Object o);
public void insertNth(Object o, int n);
}
public interface Deletes {
public void deleteFront();
public void deleteNth(int n);
public void deleteEnd();
}
10. Ejemplo
public class SLista extends List
implements Inserts,Deletes {
protected SNodo head;
public SLista() {
head = null; size = 0;
}
.
.
.
}