"Merhaba Amigo! Dün soyut derslerde eğitim gördün. Şimdi bilgimizi derinleştirme zamanı. Sana soyut dersleri nasıl doğru kullanacağını öğretmek istiyorum."

Soyut bir sınıf için gerçek dünyadan bir analoji bulmak zordur. Bir sınıf genellikle bir varlığın modelidir. Ancak soyut bir sınıf, uygulanmamış yöntemleri içerir ve uygulanmış yöntemleri içerebilir. Bu ne anlama gelir? Soyut bir sınıf için hangi analojiyi bulabiliriz? Gerçek dünyada böyle bir şey var mı?

Aslında var. Bir taşıma bandı üzerinde neredeyse bitmiş bir arabanın şasisini hayal edin. Güçlendirilmiş bir motor veya yüksek verimli bir motor kurabilirim. Ya deri iç ya da kumaş döşeme. Otomobilin özel uygulaması henüz belirlenmedi. Dahası, şasi birkaç özel uygulama üretmek için kullanılabilir. Ama kimse arabanın şu anki haliyle olmasını istemiyor. Bu klasik bir soyut sınıftır : bunun örneklerini oluşturmak mantıklı olmaz, dolayısıyla onları oluşturamazsınız; sınıf, yalnızca temelinde yaratılacak birçok tam teşekküllü mirasçı nedeniyle anlamlıdır.

"Bu yeterince kolay."

Ancak daha da soyut analojiler olabilir. Birkaç uygulanmış yöntemle daha çok benzer arayüzler. Örneğin, profesyonel bir tercüman düşünün . Kaynak ve hedef dilleri belirtmeden bir « soyut çevirmene » sahibiz . Veya bir koruma düşünün. Dövüş sanatlarında usta olduğunu ve müvekkilini koruyabileceğini biliyor olabiliriz. Ancak hangi dövüş sanatları ve müşteriyi nasıl koruyacağı, her bir korumanın "uygulama detayları" dır.

Bir örneğe bakalım:

java kodu Tanım
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);
 }
}
BodyGuard sınıfı, bir saldırıyla nasıl başa çıkılacağını belirler: ateş edin veya dövüş sanatları kullanın.

Bununla birlikte, becerinin var olduğundan emin olmamıza rağmen, belirli dövüş sanatı belirtilmemiştir.

Birkaç farklı koruma oluşturabiliriz (bu sınıfı miras alarak). Hepsi müşteriyi koruyabilecek ve saldırganı vurabilecek.

"Haklısın. Uygulanan birkaç yöntemi olan bir arayüze çok benziyor."

"Evet, bu tür bir soyut sınıf, standart Java SE sınıfları arasında yaygındır."