jueves, 13 de abril de 2023

clases abstractas, estáticas e interfaces

 

Característica

Clases abstractas

Clases estáticas

Interfaces

Propósito

Servir como base para otras clases

Agrupar funciones relacionadas y datos

Declarar un conjunto de métodos que una clase debe implementar

Uso de instancias

No se pueden instanciar directamente, solo se pueden usar como base para otras clases

No se pueden instanciar, se usan directamente desde la clase

No se pueden instanciar, solo se usan para definir una serie de métodos

Implementación de métodos

Pueden tener tanto métodos abstractos como concretos

Pueden tener solo métodos estáticos

Solo tienen la declaración de los métodos, sin implementación

Herencia

Pueden ser heredadas por otras clases

No pueden ser heredadas ni heredar de otras clases

Pueden ser implementadas por cualquier clase que quiera utilizar sus métodos

Modificadores de acceso

Pueden tener cualquier modificador de acceso

Solo pueden tener el modificador de acceso "static"

Todos los métodos y propiedades son públicos por defecto

Flexibilidad

Son menos flexibles que las interfaces, pero más flexibles que las clases estáticas

Son menos flexibles que las clases abstractas e interfaces

Son las más flexibles de las tres, ya que cualquier clase puede implementar una interfaz sin importar su jerarquía de clases

Ejemplo de uso

Una clase abstracta "Animal" con métodos comunes para todas las subclases de animales, como "respirar" o "moverse".

Una clase estática "Math" con métodos para operaciones matemáticas comunes, como "abs" o "pow".

Una interfaz "Serializable" que define el método "serialize" para guardar un objeto en un archivo o base de datos.

No hay comentarios:

Publicar un comentario

Mapa mental-informe final de auditoría