"Halo, Amigo! Dhek wingi kowe disekolahake nganggo cara kelas abstrak. Saiki wayahe njlentrehake kawruhmu. Aku pengin mulang carane nggunakake kelas abstrak sing bener."

Pancen angel nggawe analogi nyata kanggo kelas abstrak. Kelas biasane minangka model saka sawetara entitas. Nanging kelas abstrak ngemot metode sing durung ditindakake, lan bisa ngemot metode sing wis ditindakake. Apa tegese? Analogi apa kanggo kelas abstrak sing bisa ditemokake? Apa ana ing donya nyata?

Bener, ana. Mbayangno sasis saka mobil meh rampung ing sabuk conveyor. Aku bisa nginstal salah siji mesin souped-up utawa engine Highly efisien. Salah siji interior kulit utawa kain pelapis. Implementasi spesifik mobil durung ditemtokake. Apa maneh, sasis bisa digunakake kanggo ngasilake sawetara implementasi tartamtu. Nanging ora ana sing pengin mobil ing wangun saiki. Iki kelas abstrak klasik : nggawe kedadean saka iku ora bakal nggawe raos, supaya sampeyan ora bisa nggawe; kelas mung ndadekake pangertèn amarga saka akeh ahli waris lengkap sing bakal digawe ing basis.

"Iku cukup gampang."

Nanging bisa uga ana analogi sing luwih abstrak. Luwih kaya antarmuka karo sawetara cara sing ditindakake. Contone, nimbang juru basa profesional . Tanpa nemtokake basa sumber lan target, kita duwe " penerjemah abstrak ". Utawa nimbang pengawal. Kita bisa uga ngerti yen dheweke wis nguwasani seni bela diri lan bisa nglindhungi kliene. Nanging seni bela dhiri lan carane dheweke bakal nglindhungi klien minangka "rincian implementasine" saben pengawal khusus.

Ayo ndeleng conto:

kode Jawa Katrangan
abstract class BodyGuard
{
 abstract void applyMartialArts(Attacker attacker);

 void shoot(Attacker attacker)
 {
    gun.shoot(attacker);
 }

 void saveClientLife(Attacker attacker)
 {
  if (attacker.hasGun())
     shoot(attacker);
  else
     applyMartialArts(attacker);
 }
}
Kelas BodyGuard nemtokake cara kanggo ngatasi serangan: njupuk utawa nggunakake seni bela dhiri.

Nanging, seni bela dhiri tartamtu ora ditemtokake, sanajan kita yakin manawa katrampilan kasebut ana.

Kita bisa nggawe sawetara pengawal beda (kanthi warisan kelas iki). Kabeh mau bakal bisa nglindhungi klien lan nembak penyerang.

"Sampeyan bener. Iku kaya antarmuka karo sawetara cara sing ditindakake."

"Ya, kelas abstrak jinis iki umum ing kelas Java SE standar."