1. Paus dan sapi

Inilah fakta zoologi yang menarik: seekor sapi lebih dekat dengan paus daripada, misalnya, dengan kuda nil. Ternyata sapi dan paus adalah kerabat yang relatif dekat.

Lihat disini. Mari beri tahu Anda tentang polimorfisme — alat OOP lain yang sangat ampuh . Ini memiliki empat fitur.


2. Warisan bukanlah obat mujarab

Bayangkan Anda telah menulis Cowkelas untuk sebuah game. Ini memiliki banyak bidang dan metode. Objek kelas ini dapat melakukan berbagai hal: berjalan, makan, dan tidur. Sapi juga memakai lonceng yang berbunyi saat mereka berjalan. Misalkan Anda telah mengimplementasikan semua yang ada di kelas hingga detail terkecil.

Dan kemudian klien Anda datang dan mengatakan dia ingin merilis level permainan baru, di mana semua aksi terjadi di laut, dan karakter utamanya adalah ikan paus.

Anda mulai mendesain Whalekelas dan menyadari bahwa itu hanya sedikit berbeda dari Cowkelas. Logika kedua kelas sangat mirip dan Anda memutuskan untuk menggunakan pewarisan.

Polimorfisme di Jawa

Kelas Cowsangat ideal untuk mengambil peran kelas induk: ia memiliki semua variabel dan metode yang diperlukan. Yang perlu kita lakukan hanyalah memberi paus kemampuan untuk berenang. Tapi ada masalah: paus Anda memiliki kaki, tanduk, dan lonceng. Bagaimanapun, fungsi ini diimplementasikan di dalam Cowkelas. Apa yang bisa dilakukan di sini?

Polimorfisme di Jawa.  Warisan

3. Penggantian metode

Metode overriding datang untuk menyelamatkan kita. Jika kita mewarisi metode yang tidak melakukan apa yang kita inginkan di kelas baru kita, kita bisa mengganti metode itu dengan yang lain.

Penggantian metode

Bagaimana ini dilakukan? Di kelas turunan kami, kami mendeklarasikan metode yang sama dengan metode kelas induk yang ingin kami timpa. Kami menulis kode baru kami di dalamnya. Dan begitulah — seolah-olah metode lama di kelas induk sama sekali tidak ada.

Begini Cara kerjanya:

Kode Keterangan
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");
   }
}
  • Dua kelas didefinisikan di sini — CowdanWhale
  • WhalemewarisiCow
  • Kelas Whalemenimpa printName()metode
public static void main(String[] args)
{
   Cow cow = new Cow();
   cow.printName();
}
Kode ini menampilkan teks berikut di layar:
I'm a cow
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printName();
}
Kode ini menampilkan yang berikut di layar:
I'm a whale

Setelah mewarisi Cowkelas dan mengganti printNamemetode, Whalekelas sebenarnya berisi data dan metode berikut:

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

   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
Kami tidak tahu tentang metode lama.