Soyut sınıflarda yapılandırıcılar(contructor),static metotlar soyut metot olamazlar ve bu sınıflardan nesne üretilemez.
Java'da soyut sınıf gösterimi abstract anahtar sözcüğü ile yabılmaktadır.extends kelimesiylede alt sınıfı super sınıfa bağlarız (inherit etmesini sağlarız).Kullanımı şu şekildedir:
public abstract class super_class_name //sınıf tanımlaması
{
public abstract data_type method_name(); //soyut method tanımlaması
//other function with body
}
public class derived_class_name extends super_class_name //alt sınıf tanımlaması
{
//override...
//other functions
}
Şimdi de örnek bir uygulama yazalım.Oldukça basit bit bir örnek.Şekill adında super soyut sınıfımız var ve alt sınıfları kare ve dikdörtgendir(İstediğimiz kadar şekil ekleyebiliriz.).Alt sınıfların ortak yaptıkları işlev alan hesaplamadır.Bu nedenle alan metodumuzu soyut metot yapacağız.
//*************
//Şekill
//*************
package AbstractClass;
public abstract class Şekill {
public abstract double alan();
}
//*************
//Kare
//*************
package AbstractClass;
public class Kare extends Şekill{
private double kenar1;
public Kare(double kenar1)
{
this.setKenar1(kenar1);
}
public double getKenar1() {
return kenar1;
}
public void setKenar1(double kenar1) {
this.kenar1 = kenar1;
}
public double alan()
{
return Math.pow(kenar1, 2);
}
}
//*************
//Dikdörtgen
//*************
package AbstractClass;
public class Dikdörtgen extends Şekill{
private double kenar1,kenar2;
public Dikdörtgen(double kenar1,double kenar2)
{
this.kenar1=kenar1;
this.kenar2=kenar2;
}
public double getKenar1() {
return kenar1;
}
public void setKenar1(double kenar1) {
this.kenar1 = kenar1;
}
public double getKenar2() {
return kenar2;
}
public void setKenar2(double kenar2) {
this.kenar2 = kenar2;
}
public double alan()
{
return kenar1*kenar2;
}
}
//*************
//Mainn
//*************
package AbstractClass;
public class Mainn {
/**
* @author Aylin COSKUN
*/
public static void main(String[] args) {
Şekill sekil=new Kare(3);
System.out.println("Karenin alanı : "+sekil.alan());
Şekill sekil2=new Dikdörtgen(2, 7);
System.out.println("Dikdörtgenin alanı : "+sekil2.alan());
}
}
Main de ne yaptık peki? Şekil sınıfımızdan nesne oluşturamayız bu nedenle sekil adında instance yapıp buna Kare nesnesi atadık.Böylece artık sekill instance artık Kare gibi davranacaktır ve alan metodu çağrıldığında Kare'nin alanını hesaplayacaktır.Dikdörtgen için de aynı şeyleri yaptık...Son olarakta program çıktımız...
Teşekkürler çok faydalı oldu benim için
YanıtlaSilTeşekkürler çok faydalı oldu benim için
YanıtlaSilçok net anlatmışsın teşekkürler
YanıtlaSilgerçekten anladım
YanıtlaSil