Este post fue aprobado por nuestros especialistas para garantizar la exactitud de nuestra esta división.
Solución:
Desde Java Cómo programar sobre clases abstractas:
Debido a que se usan solo como superclases en las jerarquías de herencia, nos referimos a ellas como superclases abstractas. Estas clases no se pueden usar para crear instancias de objetos, porque las clases abstractas están incompletas.
Las subclases deben declarar las “piezas que faltan” para convertirse en clases “concretas”, a partir de las cuales puede crear instancias de objetos. De lo contrario, estas subclases también serán abstractas.
Para responder a su pregunta “¿Cuál es la razón para usar interfaces?”:
Un propósito de la clase abstracta es proporcionar una superclase adecuada de la que puedan heredar otras clases y, por lo tanto, compartir un diseño común.
A diferencia de una interfaz:
Un la interfaz describe un conjunto de métodos que se pueden llamar en un objeto, pero no proporciona implementaciones concretas para todos los métodos… Una vez que una clase implementa una interfaz, todos los objetos de esa clase tienen una relación is-a con el tipo de interfaz, y se garantiza que todos los objetos de la clase proporcionen la funcionalidad descrita por la interfaz. Este es true de todas las subclases de esa clase también.
Entonces, para responder a su pregunta “Me preguntaba cuándo debería usar interfaces”, creo que debería usar interfaces cuando desee una implementación completa y usar clases abstractas cuando desee piezas parciales para su diseño (para reutilización)
De los tutoriales de Oracle:
A diferencia de las interfaces, las clases abstractas pueden contener campos que no sonstatic
y final
y pueden contener métodos implementados. Tales clases abstractas son similares a las interfaces, excepto que proporcionan una implementación parcial, dejando que las subclases completen la implementación. Si una clase abstracta contiene solo declaraciones de métodos abstractos, debe declararse como una interfaz en su lugar.
Las clases pueden implementar múltiples interfaces en cualquier lugar de la jerarquía de clases, estén o no relacionados entre sí de alguna manera. Pensar en Comparable
o Cloneable
por ejemplo.
En comparación, las clases abstractas se subclasifican más comúnmente para compartir piezas de implementación. Una sola clase abstracta está subclasificada por clases similares que tienen mucho en común (las partes implementadas de la clase abstracta), pero también tienen algunas diferencias (los métodos abstractos).
Muchos casos se pueden implementar en ambos tipos de clase.
Las interfaces son útiles cuando desea definir una clase que debe tener al menos funciones básicas. Como una interfaz real, por ejemplo, USB.
interface USB
public function sendPower(); //charge iphone for example
public function sendData(); //itunes
public function recieveData();
Utilice clases abstractas cuando haya varias formas de implementar un objeto.
abstract class MobilePhone
public function isIphone();
public function charge()
//get some power, all phones need that
class iPhone extends MobilePhone
public function isIphone() return true;
Calificaciones y comentarios
Recuerda que puedes dar recomendación a este post si si solucionó tu problema.