Академический Документы
Профессиональный Документы
Культура Документы
CLASES Y HERENCIA
Contenido de la unidad
Definición de herencia, polimorfismo, sobrecarga e
invocación virtual de métodos.
Modificadores de acceso.
finalize
protected void finalize()throws Throwable
hashCode
public int hashCode()
notifyAll
public final void notifyAll()
wait
public final void wait()
throws InterruptedException
Justificación:
Se sabe que es requerido, pero no se conoce cómo
debe ser su implementación.
Sirve de base para futuras clases.
Clases abstractas
Ejemplos:
Tenemos una clase abstracta Figura que incluye un
método para calcular el área, el cuál depende de la
figura que se tenga.
Sintaxis:
public abstract class Nombre_clase{
public abstract tipo nombre_metodo(arg);
//otros métodos
}
Clases abstractas
Aspectos importantes:
Una clase abstracta puede tener métodos no abstractos.
No es posible crear objetos de una clase abstracta.
Las subclases de una clase abstracta están obligadas a
sobrescribir todos los métodos abstractos que heredan.
En caso que no interese sobrescribir alguno de esos
métodos, la subclase deberá ser declarada también
abstracta.
Puede tener constructores.
Clases abstractas
¿Qué pasará cuando intentes compilar y ejecutar?
abstract class Base{
abstract public void miFuncion();
public void otroMetodo(){
System.out.println("Otro Método");
}
}
public class Abs extends Base{
public static void main(String args[]){
Abs a = new Abs();
a.metodoA();
}
public void miFuncion(){
System.out.println("Mi función");
}
public void metodoA(){miFuncion(); }
}
Clases abstractas
¿Qué pasará cuando intentes compilar y ejecutar?
abstract class Base{
abstract public void miFuncion();
public void otroMetodo(){
System.out.println("Otro Método");
}
}
public class Abs extends Base{
public static void main(String args[]){
Abs a = new Abs();
a.metodoA();
}
public void miFuncion(int arg1){
System.out.println("Mi función");
}
public void metodoA(){miFuncion(); }
}
Clases abstractas
¿Qué pasará cuando intentes compilar y ejecutar?
class Base{
abstract public void miFuncion();
public void otroMetodo(){
System.out.println("Otro Método");
}
}
public class Abs extends Base{
public static void main(String args[]){
Abs a = new Abs();
a.metodoA();
}
public void miFuncion(int arg1){
System.out.println("Mi función");
}
public void metodoA(){miFuncion(); }
}
Clases abstractas
¿Qué pasará cuando intentes compilar y ejecutar?
class Base{
public void miFuncion();
public void otroMetodo(){
System.out.println("Otro Método");
}
}
public class Abs extends Base{
public static void main(String args[]){
Abs a = new Abs();
a.metodoA();
}
public void miFuncion(int arg1){
System.out.println("Mi función");
}
public void metodoA(){miFuncion(); }
}
Constructores
Herencia permite a las subclases tener acceso a los
datos no privados del padre, excepto los constructores.
e1.getDetails();
t1.getDetails();
e2.getDetails(); //Invocación virtual
Interfaces
Son la manera en que Java maneja la ausencia de la
herencia múltiple.
Se usa la palabra reservada interface.
Pueden ser usadas para desarrollar las siguientes
tareas:
Capturar similitudes entre clases no relacionadas sin
forzar artificialmente una relación entre las clases.
Declarar métodos que se espera que la clase
implemente.
Revelar la interface de programación de un objeto sin
revelar su clase.
Interfaces
Define un nuevo tipo de referencia.
No provee implementación. Todos los métodos son
abstractos. El modificador abstract es usualmente
omitido por convención.
No pueden declararse métodos estáticos en una
interface.
Los atributos son implícitamente estáticos y constantes.
Debe ser pública.
No se tienen constructores.
Puede extender de otra interface.
Interfaces
Declaración:
[public] interface NombreInterfaz [extends
<NombreInterface1> [<NombreInterface2>,
…]]{ }
Cuerpo de la interfaz
Definición de métodos y constantes de la interfaz.
Interfaces
Interfaces
interface Flyer
+volar()
+despegar()
+aterrizar()
Vehículo
Interfaces
Escriba una interfaz ColeccionSimple que declare los
siguientes métodos
estáVacía(): devuelve true si está vacía y false en caso
contario.
extraer(): devuelve y elimina el primer elemento de la
colección.
primero(): devuelve el primer elemento de la colección.
añadir(): añade un objeto por el extremo que corresponda y
devuelve true si se pudo añadir y false en caso contario.