javada interface içinde class kullanmaktaki amaç ne günlük hayattan bir ornek verebilecek varsa cok makbule geçer yani neden interface içinde class kullanmaya ihtiyacmız olsunki hangi durumlarda bize kolaylık sağlar ne gibi kolaylıklar sağlar Simdiden tesekkurlerj

soruldu: 18 Ara '16, 06:44

cahilm%C3%BChendis's gravatar image

cahilmühendis
204
cevap kabul oranı: 0%

İnterface içinde class kullanmak mı ? Hiç duymadım bu kavramı ya , Şunu mu demek istiyorsunuz : sınıfa neden interface implement ederiz ?

(18 Ara '16, 07:18) Qmer05 Qmer05's gravatar image

yok aslında javada daha cok yeniyim o yüzden sorum saçmaysa kusuruma bakmayın ama gecen gün netbeanste javayla oynaşırken interface nin içinde bir class tanımladım hatta nested class tanımladım hata vermedi kodun devamını getirip calısır hale getirmedim ama yani orda hata vermeyince aklıma hemen acaba bunu nerde kullanabilirim nerde isime yarar gibi saçma bi soru takıldı

(18 Ara '16, 07:37) cahilmühendis cahilm%C3%BChendis's gravatar image

.java uzantılı dosyaların içine bir çok , interface , class ,abstract sınıflar tanımlayabilirsin , illede bir tane class(soyut , somut) tanımlıyacaksın diye bir kural yok. Eclipse buna kızmaz , dolayısıyla derleyicide izin verir. Tabi ne kadar doğrudur , tartışılır.

(18 Ara '16, 17:54) Qmer05 Qmer05's gravatar image

Sen sorduktan sonra kisa bir arastirdim internette. Bir kac cevabi var aslinda ama en cok kulanilan sekli soyle:

Bir interface in icine bir klas actiginda, actigin klas ile interface ' i birbirine baglamis oluyorsun ve böylelikle baska bir klasda bir nesne ile bir islem yapmak istedinde bu nesnenin islem yapmak istedigin interface' e bagli olup olmadigini daha rahat anlaya biliyorsun. (Biraz karisik oldu ama sekildeki ornek ile anlasiliyor gibi :) )

Cevabi buldugum link i de ekliyorum burdan bakabilirsin

Örnek:

public interface Printable {
    void print();

    public static class Caller {
        public static void print(Object mightBePrintable) {
                if (mightBePrintable instanceof Printable) {
                        ((Printable) mightBePrintable).print();
                }
        }
    } }

Baska bir klasda kontrol ettiginde her seferinde böyle yazmak yerine

void genericPrintMethod(Object obj) {

     if (obj instanceof Printable) {

         ((Printable) obj).print();
     }
}

Bu sekilde yazarak, yazilabilir olup olamdigini direk kontrol ediyorsun. Tabi bu sadece bir metod ornegi.

void genericPrintMethod(Object obj) {
       Printable.Caller.print(obj);
}

Bu arada örnekleride baska bir siteden aldim.

permanent link
Bu kayıt wiki sayfası olarak tanımlanmıştır.

cevaplandı: 19 Ara '16, 14:51

akirjus's gravatar image

akirjus
0
cevap kabul oranı: 0%

kardeşim allah razı olsun ugrasmıssın baya,emin ol yararı oldu...inşallah herkese faydalı olmustur

permanent link

cevaplandı: 21 Ara '16, 09:40

cahilm%C3%BChendis's gravatar image

cahilmühendis
204
cevap kabul oranı: 0%

Genel olarak bir dosyada birden fazla class tanımlamak bazı sıkıntılar çıkartır. Özellikle TDD konusunda bazı problemler oluşturabilir. Her classı, interfacei, abstractı ayrı dosyalar halinde ve uygun isimler kullanarak tanımlamak en iyisidir. Ayrıca çooook gerekli olmadıkça hiçbirşeyi static yapmamak gerekiyor. Eğer bir nesnenin tek olması isteniyorsa Singleton Pattern kullanılabilir. Bu TDD için daha iyidir.

permanent link

cevaplandı: 27 Ara '16, 07:43

kodmanyagha's gravatar image

kodmanyagha
3.6k152856
cevap kabul oranı: 17%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,103
×1

Soruldu: 18 Ara '16, 06:44

Görüntüleme: 157 kez

Son güncelleme: 27 Ara '16, 07:43

powered by BitNami OSQA