1. Nanging ora mung kuwi.

Upamane Cowkelas kasebut duwe printAll()metode sing nyebutake rong metode liyane. Banjur kode bakal kaya iki:

Kode Katrangan
class Cow
{
   public void printAll()
   {
      printColor();
      printName();
   }

   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");
   }
}
public static void main(String[] args)
{
   Whale whale = new Whale ();
   whale.printAll();
}
Output layar bakal dadi:
I'm a white whale
I'm a whale

Elinga yen printAll()metode ing Cowkelas diarani obyek Whale, printNamemetode kelasWhale digunakake, dudu metode kasebut Cow.

Wangsulan: Bab ingkang utama iku dudu kelas cara ditulis ing, nanging jenis (kelas) saka obyek kang cara disebut.

Mung cara non-statis sing bisa diwarisake lan diganti. Cara statis ora diwarisake lan mulane ora bisa diganti.

Mangkene Whaletampilan kelas sawise ngetrapake warisan lan metode overriding:

class Whale
{
   public void printAll()
   {
      printColor();
      printName();
   }

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

   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
Mangkene apa Whalekelas katon sawise nglamar warisan lan cara overriding: Kita ora ngerti bab sembarang printNamecara lawas.

2. Typecasting

Ana titik sing luwih menarik ing kene. Amarga kelas marisi kabeh cara lan data saka kelas induk, referensi kanggo obyek kelas anak bisa disimpen ing (ditugasake) variabel sing jinise padha karo kelas induk (lan wong tuwane, lsp . nganti tekan Objectkelas). Tuladha:

Kode Katrangan
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printColor();
}
Output layar bakal dadi:
I'm a white whale
public static void main(String[] args)
{
   Cow cow = new Whale();
   cow.printColor();
}
Output layar bakal dadi:
I'm a white whale
public static void main(String[] args)
{
   Object o = new Whale();
   System.out.println(o.toString());
}
Output layar bakal dadi:
Whale@da435a.

Cara kasebut toString()diwarisake saka Objectkelas

Iki minangka properti sing larang banget: mengko sampeyan bakal ngerti carane nggunakake ing laku.


3. Nelpon cara ing obyek

Nalika metode diarani variabel, metode kasebut diarani obyek. Mekanisme iki diarani pengiriman metode dinamis.

Mangkene carane katon:

Kode Katrangan
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printName();
}
Output layar bakal dadi:
I'm a whale
public static void main(String[] args)
{
   Cow cow = new Whale();
   cow.printName();
}
Output layar bakal dadi:
I'm a whale

Elinga yen implementasine tartamtu saka printName()cara sing bakal disebut - siji ing Cowutawa siji ing Whalekelas - ora ditemtokake dening jinis variabel, nanging dening jinis obyek sing variabel nuduhake.

Variabel Cownyimpen referensi kanggo Whaleobyek, lan printName()metode sing ditetepake ing Whalekelas yaiku sing diarani.

Iki ora ketok banget. Elinga aturan utama:

Sakumpulan metode sing kasedhiya kanggo diarani variabel ditemtokake dening jinis variabel kasebut. Lan implementasi metode tartamtu sing diarani ditemtokake dening jinis / kelas obyek sing diarani variabel.

Sampeyan bakal nemoni iki kabeh wektu, dadi luwih cepet sampeyan ngelingi iki, luwih apik.