Java Dersleri (Bölüm 4)

Pardus-Linux.org | Wiki sitesinden

Git ve: kullan, ara

Derslerimize kaldığımız yerden devam ediyoruz.

Bu derste inheritance denen bir kavramı öğreneceğiz. Kavramı şöyle açıklayabiliriz:

Köpek bir hayvandır ve köpekler kümesi hayvanlar kümesinin alt kümesidir. İşte Java'da da benzer bir durum söz konusudur.

Mesela sizin Hayvan ve Kedi adlı classlarınız olsun. Bu iş için birbiriyle alakasız iki class yazmak mümkündür ancak kedi zaten bir hayvan olduğuna göre neden böyle yapalım ki? İşte bu dersimizde bunu inceleyeceğiz.

Öncelikle BlueJ'de Hayvan adlı bir class oluşturuyoruz ve içine sadece aşağıdakileri yazıyoruz:

public class Hayvan
{
    private String ad;
    private String tur;
    private String ses;
    private int yas;
    
    public Hayvan(String ad, String tur, String ses, int yas)
    {
        this.ad = ad;
        this.tur = tur;
        this.ses = ses;
        this.yas = yas;        
    }
}

Şimdi bu classımızı adım adım inceleyelim:

1) Görüldüğü üzere hiçbir metodun içinde bulunmayan ifadeler içeriyor Hayvan classı. Metodlardan önce bu şekilde değişken tanımlamaktaki amaç, bu değişkenlerin Hayvan adlı nesneye (class'a değil!!!) ait olduğunu belirtmektir. Yani, tüm hayvanların bir adı, türü, sesi ve yaşı vardır. private ifadesi ise bu değişkenlere "dışarıdan", yani bir Hayvan olmayan nesnelerden erişilmesini engellemek içindir.

2) public Hayvan metodunda birşey dikkatinizi çekti mi? void, static v.s hiçbir kelime içermiyor! Bu şekilde hiçbir ek ifade içermeyen ve adı classın adıyla aynı olan metodlara Constructor (inşacı) diyoruz. Peki constructor ne işe yarar? Constructor, başka bir nesne tarafından bir Hayvan nesnesi oluşturulmak istendiğinde bunun nasıl yapılacağını belirler, yani hayvanın nasıl olacağını tarif eder.

3) Bir diğer dikkat çeken şey ise this ifadesi. this ifadesi noktadan sonraki değişkenin metoda değil, class'a ait olduğunu belirtir. Yani

this.ad = ad

ifadesindeki ilk ad class'ın başında tanımladığımız değişken iken, ikinci ad metoda verilen argümanın adıdır.

Şimdi Compile edip class'ımızı kapatıyoruz. Son hali şöyle olmalı:

Resim:Bluej4_1.jpg

Gelelim bir hayvan oluşturmaya. Kedi adlı yeni bir class oluşturuyoruz ve içine şunları yazıyoruz:

public class Kedi extends Hayvan
{
    public Kedi(String ad, String tur, String ses, int yas)
    {
        super(ad,tur,ses,yas);
    }
}

Burada da birçok yenilik var, tek tek inceleyelim:

1) Class başlığımızda extends Hayvan diye bir ifade var. Bu ifade bu class'ın Hayvan'ın bir alt kümesi olduğunu gösterir. Yani tüm Kedi'ler birer Hayvan olacaktır.

2) Kedinin constructor'ında super şeklinde bir ifade var. super extend ettiğimiz class'ın constructor'ını çağırarak yeni bir nesne oluşturur. Bizim durumumuzda super yeni bir Hayvan oluşturacaktır.

Kodumuzu compile edip kapatıyoruz. Son hali şöyle olmalı:

Resim:Bluej4_2.jpg

BlueJ'de proje ekranına dönüyoruz. Şöyle bir görüntüyle karşılaşacaksınız:

Resim:Bluej4_3.jpg

Burada Kedi den çıkıp Hayvan'a giden ok, Kedi class'ının Hayvan class'ını inherit ettiğini, yani bütün Kedi'lerin birer Hayvan olduğunu gösterir.

Şimdi yaptıklarımızı test edelim:

Kedi class'ına sağ tıklayıp new Kedi(String ad,String tur,String ses,int yas) yazısına tıklıyoruz. Karşımıza şöyle bir pencere gelecek:

Resim:Bluej4_4.jpg

Burayı şöyle dolduruyoruz:

Resim:Bluej4_5.jpg

OK'e basıyoruz. Proje ekranı şöyle görünmeli:

Resim:Bluej4_6.jpg

Gördüğünüz üzere en altta kırmızı bir kutu olarak bir Kedi nesnesi yarattık. Şimdi nesnemize sağ tıklayıp Inspect'i (denetle) seçelim.

Resim:Bluej4_7.jpg

Görüldüğü üzere Kedi'miz başarıyla oluşturulmuş.

Bu seferlik bu kadar. Java Dersleri serisi devam edecek. :)

Bağlantılar

Bu yazı Java Dersleri serisinin bir parçası olarak Duru Can Celasun (dreamcatcher) tarafından hazırlanmıştır.



Önceki Bölüm: Java Dersleri (Bölüm 3)

Bu yazı Programlama bölümünün bir parçasıdır.