¿Qué es una clase abstracta en PHP?
¿Como puede ser usado?
php
oop
abstract-class
udaya
fuente
fuente
Respuestas:
Una clase abstracta es una clase que contiene al menos un método abstracto, que es un método sin ningún código real en él, solo el nombre y los parámetros, y que se ha marcado como "abstracto".
El propósito de esto es proporcionar una especie de plantilla para heredar y forzar a la clase heredera a implementar los métodos abstractos.
Por tanto, una clase abstracta es algo entre una clase regular y una interfaz pura. Además, las interfaces son un caso especial de clases abstractas donde TODOS los métodos son abstractos.
Consulte esta sección del manual de PHP para obtener más referencias.
fuente
1. No se pueden instanciar clases abstractas : las clases definidas como abstractas no pueden instanciarse, y cualquier clase que contenga al menos un método abstracto también debe ser abstracta.
Ejemplo a continuación:
2. Cualquier clase que contenga al menos un método abstracto también debe ser abstracta : la clase abstracta puede tener métodos abstractos y no abstractos, pero debe contener al menos un método abstracto. Si una clase tiene al menos un método abstracto, entonces la clase debe declararse abstracta.
Ejemplo a continuación:
3. Un método abstracto no puede contener cuerpo : los métodos definidos como abstractos simplemente declaran la firma del método; no pueden definir la implementación. Pero un método no abstracto puede definir la implementación.
4. Cuando se hereda de una clase abstracta, todos los métodos marcados como abstractos en la declaración de clase del padre deben ser definidos por el hijo : si hereda una clase abstracta, debe proporcionar implementaciones para todos los métodos abstractos en ella.
5. Visibilidad igual (o menos restringida) : cuando se hereda de una clase abstracta, todos los métodos marcados como abstractos en la declaración de clase del padre deben ser definidos por el hijo; además, estos métodos deben definirse con la misma (o menos restringida) visibilidad. Por ejemplo, si el método abstracto se define como protegido, la implementación de la función debe definirse como protegida o pública, pero no privada.
6. Las firmas de los métodos abstractos deben coincidir : cuando se hereda de una clase abstracta, todos los métodos marcados como abstractos en la declaración de clase del padre deben ser definidos por el hijo; las firmas de los métodos deben coincidir, es decir, las sugerencias de tipo y el número de los argumentos deben ser los mismos. Por ejemplo, si la clase secundaria define un argumento opcional, donde la firma del método abstracto no lo hace, no hay conflicto en la firma.
7. La clase abstracta no admite herencia múltiple : la clase abstracta puede extender otra clase abstracta, la clase abstracta puede proporcionar la implementación de la interfaz, pero no admite herencia múltiple.
El siguiente ejemplo causará un error fatal: No se encontró la clase 'caballo'
fuente
Hay una buena explicación de eso aquí .
fuente
Clase abstracta
1. Contiene un método abstracto
2. No se puede inicializar directamente
3. No se puede crear un objeto de clase abstracta
4. Solo se utiliza con fines de herencia
Método abstracto
1. No puede contener un cuerpo
2. No se puede definir como privado
3. Las clases secundarias deben definir los métodos declarados en la clase abstracta
Código de ejemplo:
Salida:
fuente
fuente
Las clases abstractas son aquellas clases que no se pueden inicializar directamente. O en otras palabras, podemos decir que las clases abstractas son aquellas clases cuyo objeto no se puede crear directamente. En PHP, las clases abstractas se desafían con la palabra clave abstract .
Además, para convertirse en una clase abstracta, hasta un método de la clase debe ser abstracto.
Para obtener más detalles sobre la clase abstracta, puede consultar mi blog sobre la clase abstracta en PHP .
fuente
Una clase abstracta es como la clase normal contiene variables contiene variables protegidas funciones contiene constructor solo una cosa es diferente contiene método abstracto.
El método abstracto significa un método vacío sin definición, por lo que solo una diferencia en la clase abstracta no podemos crear un objeto de clase abstracta
Abstract debe contener el método abstracto y esos métodos deben definirse en su clase heredada.
fuente