Generic Class Java

Generic Sınıflar/Metodlar

Bir yazı bastırma sınıfı yazdığımızı düşünelim. Bu sınıf örneğin array dizilerini bastırıyor. Fakat String bir diziyi bastırabilmemiz için başka bir metod daha yazıp bununla uğraşmamız gerekecekti. Generic classlar veya metodlar türden bağımsız bir şekilde işlem yaptığımız classlar veya metodlardır. Aşağıdaki ekran görüntüsünde bir generic sınıf ve metod görüyoruz.

Artık bu metoda integer,String, obje ne gönderilirse gönderilsin bastırabilecektir. Böyle ortak parametrelerde kodu değişmeyen, ortak kodları generic halinde yazmak kodda tasarruf etmemizi sağlayacaktır.

Aşağıya örnek olarak aday öğrenci örneği koyuyorum. Bir örnek içerisinde abstract class, generic metod kullanımı içeriyor.

public abstract class Aday {
    private int turkce;
    private int matematik;
    private int edebiyat;
    private int fizik;

    public Aday(int turkce, int matematik, int edebiyat, int fizik) {
        this.turkce = turkce;
        this.matematik = matematik;
        this.edebiyat = edebiyat;
        this.fizik = fizik;
    }

    public int getTurkce() {
        return turkce;
    }

    public void setTurkce(int turkce) {
        this.turkce = turkce;
    }

    public int getMatematik() {
        return matematik;
    }

    public void setMatematik(int matematik) {
        this.matematik = matematik;
    }

    public int getEdebiyat() {
        return edebiyat;
    }

    public void setEdebiyat(int edebiyat) {
        this.edebiyat = edebiyat;
    }

    public int getFizik() {
        return fizik;
    }

    public void setFizik(int fizik) {
        this.fizik = fizik;
    }
    
    abstract int puan_hesapla();
    
}
public class EsitAgirlik extends Aday {

    public EsitAgirlik(int turkce, int matematik, int edebiyat, int fizik) {
        super(turkce, matematik, edebiyat, fizik);
    }

    @Override
    public int puan_hesapla() {
       return getTurkce() *5  + getMatematik() *4 + getFizik()*1 + getEdebiyat() *6;
    }
    
}

public class Sayisal extends Aday{

    public Sayisal(int turkce, int matematik, int edebiyat, int fizik) {
        super(turkce, matematik, edebiyat, fizik);
    }

    @Override
    public int puan_hesapla() {
        return getTurkce() *5  + getMatematik() *4 + getFizik()*3 + getEdebiyat() *2;
    }
    
    
    
}
public static void main(String[] args) {
       // generic classlar veya metodlar türden bağımsız bir şekilde işlem yaptığımız classlar veya metodlardır.
    Sayisal sayisal1 = new Sayisal(3,5,7,9);
    Sayisal sayisal2 = new Sayisal(30,20,30,25);
    Sayisal birinci = birinci(sayisal1,sayisal2);
        System.out.println("Birinci ogrencinin puanı : " + birinci.puan_hesapla());
    
    }
   
 public static <E extends Aday> E birinci(E e1,E e2){ // burada extends Aday dememizin sebebi sadece e yazdığmızda çok genel bir anlam taşımasıdır. Hangi classtan göndereceğini seçersek tür farketmeden kullanabiliyoruz.
        if(e1.puan_hesapla() > e2.puan_hesapla()){
            return e1;
        }
        else return e2;
    }
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir