Java ile Inheritance (Kalıtım) Yapma Örneği
17 Ocak 2010 – 01:56Java ile kolay bir kalıtım örneği yapalım. Car isminde bir arabanın sahip olabileceği temel özelliklere sahip bir ana class yaratalım ve bu classtan kalıtımla türettiğimiz özelleşmiş arabalar oluşturalım. Öncelikle Car classımızı yazalım. Temel olarak bir arabaya hız, fiyat ve renk özelliklerini kazandıralım.
public class Car {
int speed;
double regularPrice;
String color;
//constructorda bu değerleri initialize edelim
public Car(int speed,double regularPrice,String color){
this.speed=speed;
this.regularPrice=regularPrice;
this.color=color;
}
//main fonksiyonunda arabanın fiyatına erişebileceğimiz bir metod yazalım
public double getSalePrice(){ return regularPrice; }
}
Daha sonra bu classtan türetilmiş kendi içinde farklı özellikleri olan farklı arabalar (subclasslar) üretelim.
Bir tane Car classını kalıtımla alan Sedan tipinde araba classı üretelim. Bu araba tipinde temel araba özelliklerinin yanında bir de uzunluğunu belirleyebilelim ve sedanın fiyatını, uzunluğu 20den büyükse 5% indirimli değilse %10 indirimli hale getirelim.
//kalıtım yapmak için extends ifadesini kullanıyoruz
public class Sedan extends Car{
int length;
//constructorda sedanın özellikleri belirlensin
Sedan(int speed,double regularPrice,String color,int l){
//super ifadesiyle ana classtaki değişkenlere erişebiliyoruz
super(speed,regularPrice,color);
this.length=l;
}
//fiyatı uzunluğa göre belirleyen get metodu yazalım
//dikkat ederseniz burada ana classtakiyle aynı isimde getSalePrice metodu yazdık
// override yapıyoruz
public double getSalePrice (){
if(length>20){
return super.getSalePrice()-super.getSalePrice()*5/100;
}
else{
return super.getSalePrice()-super.getSalePrice()*10/100;
}
}
}
Şimdi gene Car ana classımızdan türeyen Ford isimli bir araba üretelim. Burada arabanın özelliklerine ek olarak Ford marka arabamızın yaşını ve fiyat indirimini de ekleyelim.
public class Ford extends Car{
int year;
int manufacturerDiscount;
//constructorda özellikleri initialize edelim
Ford(int speed,double regularPrice,String color,int year,int manufacturerDiscount){
super(speed,regularPrice,color);
this.year=year;
this.manufacturerDiscount=manufacturerDiscount;
}
//override ile getSalePrice metodunda Fordun indirimli fiyatını verelim
public double getSalePrice(){
return super.getSalePrice()-this.manufacturerDiscount;
}
}
Bir de gene Car classından türeyen bir kamyon (Truck) üretelim. Burada ek olarak ağırlık özelliğini de verelim ve ağırlığı 2000kg dan büyükse %10, farklıysa %20 indirimli fiyat indirimi yaptıralım.
public class Truck extends Car{
int weight;
//constructorda değerleri initialize ediyoruz
Truck(int speed,double regularPrice,String color,int weight){
super(speed,regularPrice,color);
this.weight=weight;
}
//override ile getSalePrice metoduna kamyonun ağırlığına göre indirim yaptırıyoruz
public double getSalePrice(){
if(weight>2000){
return super.getSalePrice()-super.getSalePrice()*10/100;
}
else{
return super.getSalePrice()-super.getSalePrice()*20/100;
}
}
}
Şimdi de main classta türettiğimiz bu arabaları kullanalım. Oluşturduğumuz bu araba tiplerinin nesnelerini oluşturarak fiyatlarını alalım.
public static void main(String[] args) {
Sedan MySedan=new Sedan(230,1200.50,”red”,20);
Ford MyFord1=new Ford(180,1000.90,”black”,2008,100);
Ford MyFord2=new Ford(200,1300.90,”grey”,2009,50);
Car MyCar=new Car(100,999.99,”white”);
System.out.println(MySedan.getSalePrice());
System.out.println(MyFord1.getSalePrice());
System.out.println(MyFord2.getSalePrice());
System.out.println(MyCar.getSalePrice());
}
Programı run ettiğimizde
1080.45
900.9
1250.9
999.99
Sonuçları geldi. Görüldüğü gibi her bir arabanın fiyatı kendi tipine, özelliklerine göre değişmiş oldu.

