Java Class Yapısında Miras İnheritance Ve Uzatma Extends İşlemleri
Miras inheritance ve uzatma extends
Java Class Yapısında Uzatma (Extends) İşlemleri
Inheritance: Kalıtım – Nesneye yönelik programlamanın temel taşlarından birisidir. Classlar arası sıradüzensel (hiyerarşik) bir ilişkiyi tanımlar. Ortalama bir yazılım tasarısında sınıf sayısının onlar hatta yüzler ile ifade edildiği düşünülürse, yapı esnekliğini sağlamak açısından bu tür ilişkiler hayati önem taşır. Kısaca kalıtım altsınıflar, yani belli bir sınıf veya sınıflardan türeyen, uzmanlaşmış/ayrıntılandırılmış sınıflar yaratılmasına olanak tanır.
Inheritance, bazı durumlarda başka birinin yazdığı class'a bazı eklemeler yaparak belli bir işlem için kullanılır hale getirmek için kullanılabilir. Böylelikle sadece o class'ta olmayan property ve methodları eklemek suretiyle çok kısa sürede gelişmiş bir class sahibi olabilir. Bazen de ortak bir çok özellik içeren iki nesnede de aynen bulunan property ve methodları tanımlamaktan kurtulmak için kullanılabilir.
Örnek verecek olursak, genel 'Köpek' sınıfının olası ayrıntılandırılmış altsınıfları, Kangal, Dalmaçyalı ve Sibirya kurdu olabilir. Bu altsınıflara, 'Köpek' sınıfının üyeleri kalıtım ilkesine göre miras kalır. Böylece, tekrar yazmaya gerek kalmadan her üç alt sınıf da 'Köpek' sınıfında yer alan renk özelliğine ve havlamak yöntemine sahip olurlar. Kalıtımın bu özelliği sayesinde yazılım geliştirme süresinde ciddi oranda tasarruf edilmektedir. Üst sınıftan miras kalan sınıf üyelerinin yanısıra, her altsınıf kendi özellik ve yöntemlerini de tanımlayabilir. Örneğin Kangal altsınıfına ona özel bir özellik olan kurt_boğ yöntemi eklenebilir. Böylece, eğer 'Karabaş' Kangal sınıfına ait ise, üstsınıf olan 'Köpek' sınıfının renk ve havlamak üyelerinin yanısıra kurt_boğ yöntemine de sahip olur. Bir sınıfın birden fazla üstsınıfı olduğu takdirde çoklu kalıtımdan söz edilmektedir.
Java Class Yapısında Miras (İnheritance) İşlemleri
Extends bir sınıfın bütün elemanlarına nesne oluşturmadan direk erişim amacıyla kullanılıyor. Aşağıdaki örnekte Matematik sınıfı iki sayı arasında 4 işlem yapan metotlara sahip. Matematik2 sınıfı ise extends Matematik ile, Matematik sınıfının tüm metotlarını içine alıyor ve birde 3 sayı arasında toplam yapan metot tanımlıyor. Sonuç olarak Matematik sınıfının tüm metotlarını kullanmak için (tabiki erişim kontrolüne göre) Matematik2 sınıfında bir nesne oluşturmamız yeterli.
// deneme icin kullanacagim main metodu
public static void main(String args[]) {
// deneme icin iki tane nesne bir Matematik digeri Matematik2
Matematik MatTest = new Matematik();
Matematik2 MatTest2 = new Matematik2();
// Bolme Yaptiriyorum 1. version
System.out.println(MatTest.Bolum(10, 1));
// Toplama 1. version
System.out.println(MatTest2.Toplam(1, 2));
// Toplama 2. version (Buraya dikkat!)
System.out.println(MatTest2.Toplam(1, 1, 2));
// Carpma 1. version
System.out.println(MatTest2.Carpim(5, 6));
// Carpma 1. version
System.out.println(MatTest.Carpim(1, 9));
}
}
// once iki sayi arasinda 4 islem yapan bir sinif olusturuyorum.
class Matematik {
public int Toplam(int sayi1, int sayi2) {
return (sayi1 + sayi2);
}
public int Fark(int sayi1, int sayi2) {
return (sayi1 - sayi2);
}
public int Carpim(int sayi1, int sayi2) {
return (sayi1 * sayi2);
}
public float Bolum(float sayi1, float sayi2) {
if (sayi2 > 0) {
return (sayi1 / sayi2);
} else {
return 0;
}
}
}
// 3 sayi arasinda toplama islemi yapan bir sinif olusturuyorum.
// bu sinif extends'i Matematik sinifi
class Matematik2 extends Matematik {
public int Toplam(int sayi1, int sayi2, int sayi3) {
return (sayi1 + sayi2 + sayi3);
}
}
Düzenleyen:Hüseyin DUYAN
Kaynak:http://gunlukengin.blogspot.com/2007_02_25_archive.html
http://www.godoro.com/divisions/ehil/mahzen/Java/TheJavaBook/txt/html/document_Inheritance.html