İkinci tür yeniden kullanım sınıf yapısının kalıtım yoluyla yeniden kullanılmasıdır. Kalıtım nesneye dayalı programlama dillerinin anahtar elemanlarından biridir.
Eğer farklı sınıflar benzer durumlara sahipse ve benzer servisler sağlıyorlarsa kalıtım bu benzer kısımları genelleştirilmiş sınıf bildiriminden tekrar kullanmamıza olanak verir. Bu, soyut temel sınıf yaratılarak ve onun durum ve davranışlarını daha çok özelleştirilmiş sınıflarda tekrar kullanarak başarılır. Eğer bir sınıf temel bir sınıftan türetilmişse, bütün üye değişkenler ve üye yöntemler türetilmiş sınıf tarafından miras alınır (veya kullanılır hale getirilir). Temel sınıf superclass (süper sınıf) olarak ve türetilmiş sınıf subclass (alt sınıf) olarak adlandırılır.
Kalıtımla gerçekte superclass ile uyumlu olan yeni bir sınıf yaratılır. Yani subclass superclass türünde bir sınıfmış gibi kullanılabilir. Bu subclass örneklerinin superclass'a dönüşümünü mümkün kılar. Bu durum polimorfizm olarak tanımlanır ki bu da nesneye dayalı programlama dillerinin bir diğer anahtar elemanıdır. Polimorfizm daha sonra detaylandırırlacaktır.
Java programlama dilinde bir sınıfdan miras almak için
extends anahtar kelimesini şöyle kullanabilirsiniz:
class Şekil{
int pozisyonX;
int pozisyonY;
void move(int newX, int newY){
pozisyonX = newX;
pozisyonY = newY;
}
}
class Daire extends Şekil{
int radius;
void scale(int scaleFactor){
radius *= scaleFactor;
}
}
class Diktörtgen extends Şekil{
int radius;
void scale(int scaleFactor){
width *= scaleFactor;
height *= scaleFactor;
}
}
Alt sınıfların yaratılması ve kullanılması sıradan sınıflarla aynıdır. Kalıtım ayrıca süper sınıfın üye değişken ve yöntemlerini alt sınıfın üye değişken ve yöntemleri gibi kullanabilmenizi sağlar:
Daire c = new Daire();
c.positionX = 10;
c.positionY = 20;
c.radius = 3;
c.move(11,11);
c.scale(5);
Eğer başka bir sınıftan miras almadıysanız bile derleyici otomatik olarak
Object sınıfından miraz alır. Bildirdiğiniz her sınıf direk ve dolaylı olarak
Object sınıfından miras alır.
Object sınıfı kalıtım hiyerarşisinde en üstedir ve programdaki her nesne
Object sınıfına dönüştürülebilir (Farklı sınıfların örneklerini saklıyor,erişiyor ve değiştiriyorsanız bunu yapmanız faydalı olur).
Object sınıfı programdaki bütün sınıflar tarafından miras alınan birçok faydalı servis sağlar. Bunların birkaçı şunlardır;
toString(),
equals(),
clone(),
getClass().
Tğm liste için Java dokumantasyonuna bakabilirsiniz.