Veysel Uğur KIZMAZ

Java Class Kalıtımı ve Extend Komutu

04.04.2012Okunma Sayısı: 22335Kategori: Java

 Bu makalemizde Java’da extend durumunu inceleyeceğiz

 
Kısaca bir sınıfın başka bir sınıftaki methodlara ve değişkenlere sahip olabilmesi için yapılan işlemdir. Bir sınıf, daha genel bir kavramı ifade eden bir sınıfın elemanlarına sahip olarak tekrar tanımlamak durumunda kalmamaktadır. Bu işlem için Java’da extends keywordü kullanılmaktadır. Bir örnek ile bu işlemin nasıl yapıldığını inceleyelim.
 
Örneğin Kare ve Dikdortgen sınıfları oluşturalım. İki sınıfta da alan hesabını yapan getAlan(), çevre hesabını yapan getCevre() isminde iki fonksiyon oluşturalım.
 
Karenin de bir dikdörtgen olduğunu düşündüğümüzde, alan ve çevre hesabını Dikdortgen sınıfında yazıp Kare’yi de Dikdortgen sınıfından extend edebiliriz.
 
Bu işlemin nasıl yapıldığını inceleyelim:
 
public class Dikdortgen {
      protected double en;
      protected double boy;
     
      public Dikdortgen(double en, double boy){
            this.en = en;
            this.boy = boy;
      }
      public double getAlan(){
            return this.en * this.boy;
      }
}
 
public class Kare extends Dikdortgen {
 
      public Kare(double en) {
            super(en, en);
      }
}
 
 
Burada dikkat edilmesi gereken en önemli nokta, Dikdortgen sınıfı Kare sınıfından extend edildiğinde Kare sınıfının constructorının yazılmak zorunda olduğudur. Kare sınıfının constructorında tek parametre alıp super() methoduyla Dikdortgen classının constructorını çağırıp, Dikdortgen classının constructorının çalışmasını sağlıyoruz.
 
Classlarımızı bir örnekte deneyelim.
 
      public static void main(String[] args) {
            Kare kare = new Kare(20);
            System.out.println("Alan: " +kare.getAlan());
            System.out.println("Çevre: " + kare.getCevre());
      }
 
Ekran çıktısı aşağıdaki gibi olacaktır.
 
C# ile kodlayan arkadaşların bileceği üzere, benzer yapıyı C#’ta yaptığımızda super vb. bir işleme gerek kalmadan Dikdortgen classının constructorı da çalışmaktadır. Bu yapıya benzer bir yapı kurduğumuzda, önce Dikdortgen, sonra Kare classlarının constructorları çalışacaktır.
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com