Çoklu Kalıtım arasındaki fark nedir?

3 Cevap php

Çoklu Kalıtım arasındaki fark nedir?

Bir Defteri'nde Söylediğim bir çizgi kırmızı

there is no support for multiple inheritances at class level. This means you can't extend more than one class at a time.

Aynı kitapta anlatılan, Polimorfizminin kavramını aykırı olduğu

polymorphism is the process of creating several objects from specific base classes

Çoklu Miras PHP izin verilmez Şimdi eğer o Biçimlilik nasıl izin verilir?

3 Cevap

Ikke Dediğim gibi, Multiple Inheritance Polimorfizmi ile ilgisi yoktur.

Ben bir sınıf diyagramı çizmek olsaydı, Çoklu Kalıtım bu gibi görünüyor:

Base A    Base B
  ^         ^
   \       /
    \     /
     Child

Yani, sınıf Child hem sınıftan hem özelliklerini ve davranışlarını miras olacaktır. Java ve PHP gibi pek çok dilde bu izin vermez, ama Python yapar.

Bir uzmanlık dışarı olabildiğince soyut zaman Polymorphism, diğer taraftan, olduğunu. Tüm sınıf diyagramı İlk:

     Animal
     ^    ^
    /      \
   /        \
 Cat        Dog

Ve aşağıdakileri yapabilirsiniz:

// Assuming we have a pack of animals
// This is Java
for (Animal pet : pack)
    pet.speak();

Her pet uygulanmasına bağlı olarak farklı şeyler diyecektir.

Birden çok devralma Bir nesnenin iki farklı üst sınıftan miras anlamına gelir. Bir ProgrammerBicyclist Programcı ve bir Bicyclist hem de. Bir Bisikletçi da favorite_activity sahipken Programcı sınıf hacking olarak üye verilerini favorite_activity tanımladığı zaman sorun doğar, ama riding bulunuyor. Onu favorite_activity ne bir ProgrammerBicyclist sorarsanız, doğru cevap nedir?

Polimorfizm nesnelerin davranışları ile ilgilenir. Bu size tam olarak ne olduğunu bilmiyorum bile, bir şeyler yapmak ve elde edilen eylem nesnenin sınıfına bağlı olan bir nesneyi anlatmak sağlar. Yani bunu bir Programcı veya Cook olmadığını bilmiyorum ama, bir kişi rastlamak, ve perform_your_job() söyle. Bir Programcı ise o Cook ise o bir yemek yapacak, kod yazacak, ama özellikle write_code() veya make_a_meal() ona söylemek zorunda değilsiniz.

Bu iki birbirleri ile çok az ilgisi var.

Çoklu kalıtım derleme zamanı / runtime sonra statik bir şeydir. Polimorfizm aslında bir alttüründe yöntemi denir ki karar sadece runtime bir tekniktir.

PHP çoklu kalıtım için izin vermez.