Paylaşım , Takip İçin
Javada soyut abstract sınıflar bizim kullanmak istemediğimiz veya direkt, arka planda kullanmak istediğimiz sınıf durumlarında kullanılır.
Soyut (Abstract) Sınıf Nedir ?
- Bazı programlama yaklaşımlarında üst sınıfların direkt olarak kullanılması istenmeyebilir.
- Bu gibi durumlarda soyut sınıfları kullanmak bize avantaj sağlar.
- Soyut sınıfların amacı, farklı özellikte nesne türetirken bir şablon oluşturmaktır.
- Soyut sınıfta tanımlanan şablonlar, bu sınıfı miras alan alt sınıflarda override edilerek yeniden tanımlanır.
- Soyut sınıflar tanımlanırken class anahtar kelimesinden önce abstract kelimesi kullanılır.
Abstract (Soyut) Sınıf Özellikleri
- Soyut sınıflar kullanılarak, bu sınıflardan bir nesne oluşturamazsınız.
- Soyut sınıflar ancak kendilerinden bir alt sınıf türetmek için kullanılan sınıflardır. Bir nevi şablon yada taslak gibi düşünülebilir.
- Soyut sınıflar içerisinde metot ve yapılandırıcılar (constructors) kullanılabilir.
- Soyut sınıflar içeresinde soyut metotlar tanımlanabilir. (abstract methods)
- Soyut metotların bir gövdesi yoktur ve alt sınıfta mutlaka override edilmelidirler.
- Şimdi bu söylediklerimizi bir örnekle özetleyelim.
Örnek
public abstract class Kisi {
String adSoyad;
String dogumTarihi;
char cinsiyet;
public Kisi(String adSoyad, String dtarih, char cinsiyet) {
this.adSoyad=adSoyad;
this.dogumTarihi=dtarih;
this.cinsiyet=cinsiyet;
}
public String getAdSoyad() {
return adSoyad;
}
public void setAdSoyad(String adSoyad) {
this.adSoyad=adSoyad;
}
//Soyut bir metot tanımladık.
public abstract void kisiBilgileri();
}
Soyut Sınıfı Kullanan Alt Sınıf
public class Ogrenci extends Kisi {
long ogrNo;
String bolum;
public Ogrenci(String adSoyad, String dtarih, char cinsiyet, long ogrNo, String bolum) {
super(adSoyad,dtarih,cinsiyet);
this.ogrNo=ogrNo;
this.bolum=bolum;
}
@Override
public void kisiBilgileri() {
System.out.println("Kisi adı Soyadı:"+getAdSoyad());
System.out.println("Öğrenci Numarası:"+ogrNo);
System.out.println("Doğum tarihi:"+ super.dogumTarihi);
System.out.println("Bölümü:"+this.bolum);
}
public static void main(String[] args) {
Ogrenci ogr=new Ogrenci("Micheal Scofield", "10/10/1990",'B', 123456, "Human");
ogr.kisiBilgileri();
}
}
Soyut Metotların Override Edilmesi
- Önceki örneğe dikkat edecek olursak Kisi soyut sınıfından Ogrenci adında bir alt sınıf türettik.
- Kisi sınıfında tanımlı olan:
public abstract void kisiBilgileri();
- Soyut metodu Ogrenci sınıfı içerisinde overrride edilerek yeniden tanımlanıyor.
- Soyut metotlarda aynı soyut sınıflar gibi alt sınıf içerisinde tanımlanmadan kullanılamazlar.
- Soyut sınıf içerisindeki diğer metot ve üye değişkenlere ise alt sınıftan erişilebilir.
Overriding Örneği
Kisi.java
//Soyut bir metot tanımladık.
public abstract void kisiBilgileri();
Ogrenci.java
@Override
public void kisiBilgileri() {
System.out.println("Kisi adı Soyadı:"+getAdSoyad());
System.out.println("Öğrenci Numarası:"+ogrNo);
System.out.println("Doğum tarihi:"+ super.dogumTarihi);
System.out.println("Cinsiyet:"+cinsiyet);
System.out.println("Bölümü:"+this.bolum);
}
Abstract sınıflar dışında diğer java konuları için —— Java
Paylaşım , Takip İçin