Bir sınıfın kurulmasında o sınıfla direk olarak ilişkisi olan bir sınıftan onun tüm metodları ve değişkenleri kalıtım (inheritance) yoluyla yeni kurulan bir sınıfa aktarılabilir. Kalıtım için sınıf(class) tanımında extends kelimesi kullanılır. Eğer bir sınıftan daha alt sınıflara kalıtım yoluyla aktarma yapılacaksa privatedeğişken türü yerini protected değişken türüne bırakır. Protected private deyiminin aynıdır. Fakat kalıtımla değişkenlerin aktarıldığı alt sınıflara değişkenleri görme izni verir. Private terimi ise kalıtımla aktarılan alt sınıflardan bile o değişkenleri saklar.
Şekil 3.6.1 de nokta sınıfı tanımlanmıştır. Şekil 3.6.2 de ise nokta sınıfından kalıtım yoluyla yaratılan daire sınıfını görüyoruz. Programda da görüleceği gibi daire sınıfının tanımı
public class daire extends nokta
terimiyle yapılmıştır. Ayrıca daire sınıfının kurucusu yazılırken nokta sınıfının kurucusu direk olarak super(a,b); terimiyle çağırılmıştır.
Burada önemli bir noktayı hatırlatalım : bir sınıf sadece bir tane başka sınıfın netod ve değişkenlerini kalıtım yoluyla aktarabilir.
public class nokta
{
protected double x, y;
public nokta(double a, double b)
{
noktagir(a,b);
}
public void noktagir(double a, double b) { x=a; y=b; }
public double Xoku() {
return x;
}
public double Yoku()
{
return y;
}
public String toString()
{
return "["+x+","+y+"]";
}
}
Şekil 3.6.1 nokta.java programı ve nokta sınıfının tanımı.
import nokta;
public class daire extends nokta
{
protected double yaricap;
public daire()
{
//daire kalitim yaptigi nokta sinifinin kurucu metodunu
// super deyimi ile cagirabilir.
super(0,0);
yaricapgir(0);
}
public daire(double r, double a, double b)
{
super(a,b);
yaricapgir(r);
}
public void yaricapgir(double r)
{
if(r >= 0.0)
yaricap=r;
else
yaricap=0.0;
}
public double yaricapoku()
{
return yaricap;
}
public double alan()
{
return 3.14159*yaricap*yaricap;
}
public String toString()
{
return "Merkez = "+"["+x+","+y+"]"+
"; Yaricap="+yaricap;
}
}
Şekil 3.6.2 daire.java programı ve daire sınıfının tanımı. Daire sınıfı nokta sınıfından Kalıtım (inheritance) yoluyla türetilmiştir.
Kalıtım yoluyla aktarılan bir metod yeni programda o programın içinde yazılmış gibi aynen kullanılabilir.