OOP - aynı zamanda bir çocuk ve onun ana sınıfını aşırı yükleme?

4 Cevap php

Ben bir çerçeve ile çalışıyorum, ama bazen ben sınıfları yüklenme bazı yöntemleri değiştirmek gerekir.

Bir B sınıfı A sınıfı devralan ve ben, ikisini de aşırı örneğin gereken yere zaman benim sorunum:

class B extends A {}

Önce bazı yöntemleri değiştirmek için, A ve B aşırı:

class AA extends A {}
class BB extends B {}

Ama sonra ne BB için yapılacak AA uzanır

: - ('<' Anlamına gelir uzanır) diğer deyişle

class B   <---  class A
   ^               ^
   |               |
   |               |
class BB  <-?-  class AA

4 Cevap

i Composition arıyor olabilir düşünüyorum

Evet. Traits veya Kompozisyon oynamak için giriyor.

Temel olarak, bir programlama kavramı özellikleri, herhangi bir sınıf olarak içerebilir işlevsellik grubudur. Eğer sınıflar ekleyebileceğiniz işlevler sadece bir set gibi özelliklerin düşünün.

Ne yapmak istediğiniz çoklu kalıtım denir, ama PHP ve diğer dillerde son tarafından desteklenmiyor. Orada birden çok devralma kullanmak için iyi bir neden nadiren, ve kafa karıştırıcı olabilir, çünkü genellikle hoş karşılanmaz.

Belirtildiği gibi, muhtemelen kompozisyon ile temiz Wat istediğinizi elde edebilirsiniz, ama sınıfları hakkında daha fazla bilgi olmadan, Amy'yi özel tavsiye vermek mümkün değildir.

Dikkat etmeniz gereken bir kural miras üzerinden kompozisyonunu tercih her zaman. Eğer bu şekilde düşünme ve hemen hemen her zaman kompozisyon kullanmaya başladığınızda, miras kullanmayı karar oldukça açık hale gelir.