Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Duda conceptual con clases hijas

Estas en el tema de Duda conceptual con clases hijas en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Leyendo el manuel de clases y objetos en PHP Aqui Me quedó una duda con eso que dicen que las clases finales pueden hacer que ...
  #1 (permalink)  
Antiguo 21/08/2006, 08:58
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Duda conceptual con clases hijas

Leyendo el manuel de clases y objetos en PHP Aqui
Me quedó una duda con eso que dicen que las clases finales pueden hacer que sus clases hijas sobreescriban los metodos... pero en los ejemplos como este:
Código PHP:
<?php
class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
  
   final public function 
moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class 
ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
Marca error, como comentan.... entonces como haces una clase hija que sobrescriba los metodos de la clase base???
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #2 (permalink)  
Antiguo 21/08/2006, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Simplemente no los declares como final, cuando tu declaras una clase como final, le estas diciendo al compilador eso, que el metodo es final y no puede ser reemplazado.
Código PHP:
// No jurula
<?php
class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
  
   final public function 
moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class 
ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
Código PHP:
// Si jurula
<?php
class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
  
   public function 
moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class 
ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
BaseClass::moreTesting()
?>
  #3 (permalink)  
Antiguo 21/08/2006, 09:52
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Gracias.! es que me habia hecho dudar esto:
PHP 5 introduce la palabra reservada 'final', la cual prevee que las clases hijo puedan sobreescribir un método, usando el prefijo 'final' en la definición del método. Si la clase en sí misma es definida como 'final' entonces no puede ser extendida.
Pense que si declarabas un metodo "final" podria ser sobreescrito...
Pero ya aclare ese punto.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #4 (permalink)  
Antiguo 21/08/2006, 11:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Esta mal traducido, jeje, pero es lo opuesto, si deseas aprender OOP, te recomiendo leas libros para tal efecto, no "confies" mucho en lo que explica el manual, mejor ve que "soporte" OOP da PHP y eso aplicalo con tus conocimientos generales.

Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:03.