Usuario:Luiismendz
Métodos Abstractos[editar | editar código]
• Son métodos que no tienen implementación (body) • Para crear un método abstracto sólo escribir la declaración del método sin el cuerpo y usar la palabra reservada
abstract Java 4 – Sin { }
• Ejemplo:
// Notese que no hay cuerpo public abstract void algunMetodo();
Que es o que son las Clases Abstractas[editar | editar código]
• Una clase abstracta es una clase que contiene uno o más métodos abstractos
• Una clase abstracta no se puede instanciar
// Da error de compilacion MiClaseAbst a1 = new MiClaseAbst(); Java 5 MiClaseAbst a1 = new MiClaseAbst();
• Otra clase (clase concreta) tiene que proporcionar la implementación de los métodos abstractos – La clase concreta tiene que implementar todos los métodos abstractos de la clase abstracta para que sea usada para instanciarla
– Las clases concretas usan la palabra reservada extends
Ejemplo de Clase Abstracta
public abstract class LivingThing
{ public void breath(){ System.out.println("Living Thing breathing..."); }
public void eat(){ System.out.println("Living Thing eating..."); }
public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); }
Java 6 /** * Abstract method walk() * Queremos que este metodo sea implementado * por una clase concreta. */ public abstract void walk(); }
Uso de las clases abstractas[editar | editar código]
• Los métodos abstractos son normalmente declarados donde dos o más subclases se espera que cumplan un papel similar en diferentes modos a través de diferentes implementaciones (polimorfismo) – Las subclases extienden la misma clase abstracta y Java 8 proporcionan diferentes implementaciones para los método abstractos • Usar clases abstractas para definir tipos amplios de comportamientos en la raíz de la jerarquía de clases y usar sus subclases para proporcionar los detalles de implementación de la clase abstracta
Qué es una interface?[editar | editar código]
• Define una forma estándar y pública de especificar el comportamiento de clases
• Todos lo métodos de una interface son métodos abstractos (firmas de métodos sin implementación) Java 9
• Una clase concreta debe implementar (implements) la interface, es decir, implementar todos los métodos
• Permite la implementación de clases con comportamientos comunes, sin importar su ubicación en la jerarquía de clases Definiendo interfaces
• Sintaxis para definir una interface:
public interface [NombreInterface] { // metodos sin cuerpo }
• Ejemplo: interface que define relaciones entre dos Java 10 objetos de acuerdo al “orden natural” de los objeto
s public interface Relation { public boolean isGreater(Object a, Object b); public boolean isLess(Object a, Object b); public boolean isEqual(Object a, Object b); } Implementando interfaces
• Para crear una clase concreta que implementa una interface, se usa la palabra reservada implements
/** * Clase Line implements Relation interface */ public class Line implements Relation { Java 11 private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; }
La interfaz como referencia[editar | editar código]
• La definición de una interface implica una definición de un nuevo tipo de referencia y por ello se puede usar el nombre de la interface como nombre de tipo
• Si se define una variable cuyo tipo es una interface, se le puede asignar un objeto que es una instancia de Java 18 una clase que implementa la interface
• Ejemplo: la clase Person implementa
PersonInterface Person p1 = new Person(); PersonInterface pi1 = p1; PersonInterface pi2 = new Person();
Relación de una interface a una clase
• Una clase concreta sólo puede extender una super clase, pero puede implementar múltiples interfaces – El lenguaje Java no permite herencia múltiple, pero las interfaces proporcionan una alternativa
• Todos los métodos abstractos de todas las interfaces Java 21 tiene que ser implementados por la clase concreta
public class IndustrialStudent extends Student implements PersonInterface, OtraInterface, NesimaInterface { // todos los metodos abstractos de todas las // interfaces deben ser implementados