Java - Interface & Abstract Örneği

Çarşamba, Mayıs 13, 2015 kustemura 0 Yorum


Önceki yazılarımda Interface ( Arabirim ) ve Abstract ( Özet / Soyut) konularından bahsetmiştim.
Şimdi daha geniş ve anlaşılabilir bir örnek ile bunu ele alalım.
interface Living {
 String talk();
 String myNameIs();
}

abstract class People implements Living {
 private final String name;

 protected People(String name) {
  this.name = name;
 }

 @Override
 public String myNameIs() {
  return name;
 }

}

class Ali extends People {

 public Ali(String name) {
  super(name);

 }

 @Override
 public String talk() {
  return " Merhaba , Benim Adım";
 }

}

class Can extends People {
 public Can(String name) {
  super(name);
 }

 @Override
 public String talk() {
  return " Merhaba , Ben ";
 }
}

class PeopleDemo {
 public static void main(String args[]) {
  final Living[] peoples = { new Ali(" Ali "), new Can(" Can ") };
  for (final Living people : peoples) {
   System.out.println(people.talk() + people.myNameIs());
  }
 }
}
Programın Çıktısı : 
 Merhaba , Benim Adım Ali 
 Merhaba , Ben  Can 
Bu programda Living (Canlılar) adında bir interface oluşturdum . Ardından bir abstract sınıfa bunu implement ettim. Daha sonra oluşturduğum bu abstract People (İnsan) sınıfından 2 adet alt sınıf (subclass) oluşturdum.Oluşturduğum 2 alt class'ında talk() methodu birbirinden bağımsız bir sonuç dönderiyor.Fakat name değişkeni ise hep aynı constructoru ve sadece abstract class içerisindeki myNameIs() methoduna gönderme yapıyor.Bu sayede myNameIs() methodunu tekrar tekrar yazmaktansa sadece 1 kere yazıp bütün alt classlarda çağırmış olduk.Bu yapı aynı zamanda Çok Biçimlilik özelliğini işaret eder.Temel sınıf ( People )'dan türetilmiş olan alt sınıflarda paylaşılan aynı methodun bu sınıflarda farklı şekillerde uyarlanabilmesidir.

0 yorum :