Java’da Soyut (Abstract) Sınıflar ve Metodlar
Bazen oluşturulan nesneler direkt olarak kullanılmazlar ve kendisinden başka nesneler türetilsin diye yazılır. Bu durumdaki sınıflara abstract(soyut) sınıflar denir. Bir sınıfı veya metodu abstract olarak tanımlamak için erişim belirtecinden sonra abstract anahtar sözcüğünü kullanmalıyız. Soyut olarak tanımladığımız sınıfın, metodlarının alt sınıfları mutlaka override edilmelidir.
- Override: Bir sınıf üretildiği sınıftan, herhengi bir metodu değiştirmek istediği zaman override edilir. Bu şekilde alt sınıf, üst sınıfın metodunu direk kullanmak yerine kendine ait bir metod oluyor. Her metod için uygulanır, aynı olan metod isimlerinin kendi sınıfına ait olması için @Override yazılarak kullanılır.
Şimdi aşağıdaki örneğimize bakarak daha iyi anlayalım:
geometrikSekiller sınıfı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package soyutSınıf; public abstract class geometrikSekiller { private String nesne; public void nesneIsmi(String nesne) { this.nesne=nesne;//geometrik sekillerimizin isimleri } public String nesneGetir() { return this.nesne;//sekillerimizin ismini döndürecek metod } public static void main(String[] args) { ucgen ucgenNesnesi=new ucgen(); dikdortgen dikdortgenNesnesi=new dikdortgen(); daire daireNesnesi=new daire(); //nesnelerimizi oluşturduk ucgenNesnesi.ozellikler(10, 23); System.out.print(ucgenNesnesi.nesneGetir()+": "); System.out.println(ucgenNesnesi.alanHesapla()); dikdortgenNesnesi.ozellikler(12, 9); System.out.print(dikdortgenNesnesi.nesneGetir()+": "); System.out.println(dikdortgenNesnesi.alanHesapla()); daireNesnesi.ozellikler(3.0); System.out.print(daireNesnesi.nesneGetir()+": "); System.out.println(daireNesnesi.alanHesapla()); } public abstract double alanHesapla();//soyut metodumuz } |
ucgen sınıfı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package soyutSınıf; public class ucgen extends geometrikSekiller{ private double yukseklik; private double taban; public void ozellikler(double yukseklik,double taban) { nesneIsmi("Üçgen Şekli"); this.yukseklik=yukseklik; this.taban=taban; } @Override public double alanHesapla() { return (taban*yukseklik)/2; } } |
dikdortgen sınıf:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package soyutSınıf; public class dikdortgen extends geometrikSekiller{ private double uKenar; private double kKenar; public void ozellikler(double uKenar,double kKenar) { nesneIsmi("Dikdörtgen Şekli"); this.uKenar=uKenar; this.kKenar=kKenar; } @Override public double alanHesapla() { return uKenar*kKenar; } |
daire sınıf:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package soyutSınıf; public class daire extends geometrikSekiller{ private double yariCap; private double pi=Math.PI; public void ozellikler(double yariCap) { nesneIsmi("Daire Şekli"); this.yariCap=yariCap; } @Override public double alanHesapla() { return pi*Math.sqrt(yariCap); } } |
Gördüğünüz gibi soyut olarak tanımladığımız sınıfımızın, alt sınıflarının hepsinde bulunan aynı isme sahip metodların override ederek ve sınıf içerisinde soyut metodla çağırabildik.
Arkadaşlar bu bölümde Java’da Nesneye Yönelik Programlamada Abstract yani soyut sınıf ve metodları anlatmaya çalıştık. Sizlerde bu örneklerle sınırlı kalmayıp güncel hayattan bir çok örnek program kodlayabilirsiniz takibiniz için teşekkürler… Bizi takip etmeye devam edin bol kodlu günler…