1. Balinalar ve inekler
İşte ilginç bir zoolojik gerçek: Bir inek, bir balinaya, örneğin bir su aygırından çok daha yakındır. İnekler ve balinaların nispeten yakın akraba olduğu ortaya çıktı.
Buraya bak. Size başka bir çok güçlü OOP aracı olan polimorfizmden bahsedelim . Dört özelliği vardır.
2. Miras her derde deva değildir
Cow
Bir oyun için bir sınıf yazdığınızı hayal edin . Birçok alanı ve yöntemi vardır. Bu sınıfın nesneleri çeşitli şeyler yapabilir: yürümek, yemek yemek ve uyumak. İnekler ayrıca yürürken çalan bir zil takarlar. Diyelim ki sınıftaki her şeyi en ince ayrıntısına kadar uyguladınız.
Sonra müşteriniz gelir ve tüm aksiyonun denizde gerçekleştiği ve ana karakterin bir balina olduğu yeni bir oyun seviyesi yayınlamak istediğini söyler.
Bir sınıf tasarlamaya başlarsınız Whale
ve bunun sınıftan çok az farklı olduğunu fark edersiniz Cow
. Her iki sınıfın da mantığı birbirine çok benziyor ve siz kalıtımı kullanmaya karar veriyorsunuz.
Sınıf Cow
, ana sınıfın rolünü üstlenmek için idealdir: gerekli tüm değişkenlere ve yöntemlere sahiptir. Tek yapmamız gereken balinaya yüzme yeteneği vermek. Ancak bir sorun var: Balinanızın bacakları, boynuzları ve zili var. Sonuçta, bu işlevsellik sınıf içinde uygulanmaktadır Cow
. Burada ne yapılabilir?
3. Yöntem geçersiz kılma
Yöntem geçersiz kılma imdadımıza yetişir. Yeni sınıfımızda tam olarak istediğimizi yapmayan bir yöntemi miras aldıysak, o yöntemi başka bir yöntemle değiştirebiliriz.
Bu nasıl yapılır? Alt sınıfımızda, geçersiz kılmak istediğimiz üst sınıfın yöntemiyle aynı yöntemi bildiririz. İçine yeni kodumuzu yazıyoruz. Ve hepsi bu - sanki ana sınıftaki eski yöntem yokmuş gibi.
Bu nasıl çalışır:
kod | Tanım |
---|---|
|
|
|
Bu kod, ekranda aşağıdaki metni görüntüler:
|
|
Bu kod, ekranda aşağıdakileri görüntüler:
|
Cow
Sınıfı devraldıktan ve yöntemi geçersiz kıldıktan sonra printName
, Whale
sınıf aslında aşağıdaki verileri ve yöntemleri içerir:
|
Eski bir yöntem hakkında bilgimiz yok. |
GO TO FULL VERSION