Java’da interface ve soyut (abstract) sınıf kullanımı

Kas 19th, 2008 | Yazar: Özcan Acar | Kategori: Java

Java dilinde interface adını taşıyan, tasarım şablonlarında ve modellemede kullanılan sınıflar tanımlamak mümkündür. Bir interface normal bir Java sınıfından farksız bir şekilde tanımlanır. Sınıf tanımlanırken class yerine interface terimi kullanılır.

Bu yazıyı PDF olarak edinebilirsiniz.

  Java'da Interface ve Abstract Sınıflar (273,4 KiB, 39.620 yükleme)

Share Button

Özcan Acar

Bilgisayar mühendisi olan Özcan Acar 1997 yılından beri programcı olarak çalışıyor.

KurumsalJava.com, SmartHomeProgrammer.com ve Mikrodevre.com adresleri altında blog yazıyor. Kurduğu BTSoru.com'da ona yazılımla ile ilgili sorularınızı yöneltebilirsiniz. Pratik Programcı Yayınları bünyesinde Pratik Spring, Pratik Agile, Pratik Git ve Design Patterns ismini taşıyan kitapları bulunmaktadır. 21.12.2009 tarihinde Java Champion olarak seçildi.
  • Share/Bookmark
10 yorum | 24.087 kez okundu |

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (4 değerlendirme, ortalama: 5, toplam oy 5)
Loading ... Loading ...
Tags: , ,

10 YORUM “Java’da interface ve soyut (abstract) sınıf kullanımı”

  1. Yasin diyor ki:

    Makale için çok teşekkürler.

    Makale .jsp uzantılı geliyor, bunu pdf’e dönüştürmemiz gerekiyor. Bu bir hata mı, yoksa normal mi?

  2. acar diyor ki:

    Content-type da bir sorun olsa gerek, ben kodu tekrar kontrol edecegim.

  3. osman haktan diyor ki:

    Yazınız için teşekkürler. Kitabınızın türkçe kaynak arayanlar için çok yardımcı olacaktır muhakkak.
    Yazınızda geçen “Örneğin C++ dilinde mevcut olmayan bu yapılar, Java diline esnek yazılımlar yapılabilmesi adına büyük zenginlik katmaktadır” ibaresinin doğru olmadığı kanaatindeyim. C++ ta da içerisinde veri olmayan soyut sınıflar tanımlayıp bunları kalıtım (inheritance) yoluyla tıpkı java interface leri gibi kullanabilirsiniz (unutmayalım ki C++ çoklu kalıtımı da destekler). Kurumsal C++ uygulamalarında sık kullanılan bu tasarım kalıbı Java da anahtar isim (keyword) verilip, kullanım kuralları daha belirginleştirilmiştir. Yani “zenginlik katmaktadır” kısmını doğru bulmadım. Kullanmasını bilen için zenginlik başka yerlerde zaten vardı. Java’nın C++ a göre sağladığı çok büyük esneklikler var muhakkak ama bu onlardan biri değil.
    Kitabınızdan bir bölümü bizlerle paylaştığınız için tekrar teşekkür ediyorum, umarım kitabınızın diğer bölümlerini de zaman içinde paylaşır ve öğrenmeye hevesli arkadaşlara yardımcı olmuş olursunuz.

  4. acar diyor ki:

    Sevgili Osman, yorumun için tesekkür ederim. Ben C++ uzmanı değilim, lakin C++ daki OO konseptlerini taniyorum. C++ da tamamen soyut olan sınıflar tanımlıyarak, Java interface lere benzer yapılar oluşturmak mümkün, lakin benim kast ettigim C++ da safkan interface konseptinin olmadığıydı. Ama haklısın, cümle daha değişik ifade edilerek, C++ ve Java arasındaki farkın interface siniflar açısından altı çizilebilirdi. Yazı üzerinde gerekli değişikliği yapacağım.

  5. sami dirik diyor ki:

    Merhaba,
    Sitenizi yahoo bilgisayar grubuna attığınız mailden gördüm ve oldukça hoşuma gitti. İçerik arttıkça daha da güzel olacağına inanıyorum.
    Başarılar.

  6. Abdulkadir diyor ki:

    Selamlar
    Java’da interface ve soyut (abstract) sınıf kullanımı ile ilgili makaleniz cok mutis olmustu anlasilir bir dil ve ornegin olmasi makalenizi cok mutis yapmis cok tesekurler kendinize iyi bakin hayirli gunler

  7. Emre SÜREN diyor ki:

    Merhaba;
    Dokumandaki bir ornek le ilgili bir parca bilgi aktarayim.

    Orneklerde once iki tane kotu tasarimdan daha sonra composition ile nasil esnek ve kaliteli bir cozum yapilacagi anlatiliyor 16. sayfadan sonra. O bolumu kisaca buraya tasiyorum;

    Ilk olarak,
    Abstract class a fax metodu ekleyerek cozum sunulmus.
    Bu cozumun iyi bir cozum olmadigi, fax cekme ozelligi olmayan printerlar icin de bu fax metodu kullanima erisilir oldugundan bahsedilmis.

    daha sonra 2. cozum yolu olarak
    Abstract class a fax metodunu eklemek yerine interface bir sinif tanimlayip cozum gosterilmis.
    Bu cozumun de iyi bir cozum olmadigi, kod tekrari yapacagindan bahsedilmis.
    Yani butun printerlar icin tek tek implementation yapilmasi gerekitigi aciklanmis.

    Yanliz burada gozden kacan birsey var,
    Ilk ornek te bile,
    Printer multi = new MultiPrinter(); seklinde kullanim mumkun iken, burada mumkun degildir. Cunku fax metoduna ulasilamaz, MultiPrinter multi = new MultiPrinter(); seklinde kullanilmak zorunda. Bu daha buyuk bir problem.

    Iyi calismalar.

  8. acar diyor ki:

    Böyle bir örnek cast gerektiriyor, sorun ne yazik ki örnegin kendisinde yatiyor. Nasil bir cözüm uygulanabilecegi 21. sayfadan itibaren aktarilmis.

  9. İbrahim Gündüz diyor ki:

    Müthiş bir makale, sadece 6 sayfa okudum. İnterface konusunu müthiş anlatmış, teşekkür ederim.

  10. […] gerektiğini tanımlarlar, ama nasıl yapıldıklarını göstermezler. Örneğin Java dilinde interface sınıfları yardımı ile soyut işlemler tanımlanır. Aşağıda bunun bir örneğini […]