Konular

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.

  Bir class'ın başka bir class'daki property ve method'lara sahip olmasına inheritance denir.. Belli bir class, daha genel bir kavramı ifade eden class'ın üyelerine sahip olarak, onları tekrar tanımlamak zorunda kalmaz. Bir class'ın diğerindeki özellikleri miras olarak alması için kullanılan keyword 'extends' dir. Anlam olarak "Bu class şu class'ı 'genişletir' yani ondaki property ve methodları alır ve yenilerini ekler" demektir.

  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.

 

public class MatematikTest extends Matematik {
    // 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

Yorumunuzu Ekleyin

Java Paketleme
Operatorler
Dizi Yapıları
Statik Alanlar
Javada Diziler
Javada Diziler
Yükleniyor...