Tome este ejemplo:¿Los constructores de clases abstractas no se invocan implícitamente cuando se crea una instancia de una clase derivada?
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
Viniendo de un C# fondo, espero que la salida sea
Base __construct
Niño __construct
Sin embargo, la salida real es sólo
Child __construct
No indican explícitamente esto pero implican que si la clase secundaria no tiene un constructor, se llamará al constructor padre. ¿Es eso cierto? – andrew
Sí: si la clase secundaria no define un constructor, la primaria no se sobrescribe y, por lo tanto, se llama ;;; citando el manual: Los constructores principales no son llamados implícitamente ** si la clase hija define un constructor **. –
@PascalMARTIN Gracias, estaba buscando intentando verificar eso. Hizo un poco de búsqueda. –