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

CowBir 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 Whaleve 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.

Java'da çok biçimlilik

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?

Java'da çok biçimlilik.  Miras

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.

Yöntem geçersiz kılma

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
class Cow
{
   public void printColor ()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a cow");
   }
}

class Whale extends Cow
{
   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
  • Burada iki sınıf tanımlanmıştır — CowveWhale
  • Whalemiras alırCow
  • Sınıf , yöntemi Whalegeçersiz kılarprintName()
public static void main(String[] args)
{
   Cow cow = new Cow();
   cow.printName();
}
Bu kod, ekranda aşağıdaki metni görüntüler:
I'm a cow
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printName();
}
Bu kod, ekranda aşağıdakileri görüntüler:
I'm a whale

CowSınıfı devraldıktan ve yöntemi geçersiz kıldıktan sonra printName, Whalesınıf aslında aşağıdaki verileri ve yöntemleri içerir:

class Whale
{
   public void printColor()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
Eski bir yöntem hakkında bilgimiz yok.