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

Duda con herencia e interfaces

Estas en el tema de Duda con herencia e interfaces en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola buenas, No es la típica pregunta de cómo usar los interfaces y para qué son, he trabajado hace un tiempo con objetos en Java, ...
  #1 (permalink)  
Antiguo 03/06/2009, 08:05
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 21 años, 11 meses
Puntos: 8
Duda con herencia e interfaces

Hola buenas,

No es la típica pregunta de cómo usar los interfaces y para qué son, he trabajado hace un tiempo con objetos en Java, pero hace mucho, y a esto que seguramente sea una tontería le estoy dando demasiadas vueltas ya y no lo tengo claro.

Para no liarles mucho con explicaciones, básicamente lo que tengo es:

Código:
class AAA {
    // este método deberá ser llamado por todas 
    // las demás clases, por lo tanto, todas heredarán de ella
    public function metodo_aaa();	
}

class BBB extends AAA {		
    // este método podrá o no, ser llamado por otras clases
    public function metodo_bbb();	
}

class CCC extends AAA {		
    // este método podrá o no, ser llamado por otras clases
    public function metodo_ccc();	
}

... Las clases BBB y CCC heredan de AAA. Hasta aqui bien. Ahora:

Código:
class 111 extends AAA {
    
    // Esta clase hereda de AAA
    // PERO deberá poder acceder también a los métodos de BBB 
}

class 222 extends AAA {
    // Esta clase hereda de AAA
    // PERO deberá poder acceder también a los métodos de BBB y CCC    
}
Se que usando interfaces, podré indicar que en las clases 111 y 222 deberán redefinir los métodos de BBB/CCC necesarios, pero... ¿hay algún modo de acceder diréctamente a los métodos de dichas clases sin tener que redefinirlos (tendría que poner el mismo código que contienen las primeras), o sea, como en herencia múltiple (que no hay en PHP)

Muchas gracias
  #2 (permalink)  
Antiguo 03/06/2009, 08:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda con herencia e interfaces

No, la herencia solo trabaja de padre a hijo, si quieres que tu clase 111 tenga los métodos de BBB necesitas heredar de BBB, así tienes a tu disposición los métodos de AAA y BBB.

Las interfaces lo único que hacen es obligar a la clase que la implemente a implementar los métodos que defina la interfaz, pero de ninguna forma crean herencia múltiple.

Saludos.
  #3 (permalink)  
Antiguo 03/06/2009, 08:10
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 21 años, 11 meses
Puntos: 8
Sí, me había dando cuenta después de poner el post, lo que no tengo nada claro es cómo hacer en el caso de la clase 222, pues no hay (ni debe haber en este caso) herencia entre ellas dos

Gracias

Se me acaba de ocurrir que podría definir como static los métodos de AAA... pero, teniendo en cuenta que dicha clase contiene los métodos para conectar y hacer consultas a la BD, sería un mal diseño por posibles problemas de seguridad ? Gracias de nuevo

Última edición por GatorV; 03/06/2009 a las 09:19
  #4 (permalink)  
Antiguo 03/06/2009, 09:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda con herencia e interfaces

El caso de la clase 222, es complicado, ya que no hay herencia multiple, lo mejor que puedes hacer en este caso es tener dos miembros en esa clase que sean la clase BBB y CCC así puedes mandar a llamar los métodos de cada una.

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 08:42.