Arkadaşlar ben galiba bu ikisi arasındaki farkı tam anlamamışım yada düzgün kullanmayı bilmiyorum FileFilter kullanarak kendi filte sınıfımı yazıorum ama aslında yazamıyorum Sorun şu ki aşağıdaki gibi yapsam "no interface execpted here" yazıyor Implement desem hata vermiyor fakat bu seferde addChoosableFileFilter metodunu kullanımıyorum çünkü parametre olarak FileFilter bekliyor

   package tomorrow;

            import java.io.File;
            import java.io.FileFilter;
            import javax.swing.JFileChooser;
            import javax.swing.filechooser;

             public class fewq {

    public static void main(String...args){
    JFileChooser chooser=new JFileChooser("C:\\\\");
   // chooser.addChoosableFileFilter(

                }

      }
          **class MyFilter extends FileFilter{**

    public boolean accept(File file) {
     if(file.getName().endsWith(".java"))
         return true;
     if(file.getName().endsWith(".txt"))
     return true;
     return false;
      }
     }

soruldu: 17 Tem '13, 06:47

ali's gravatar image

ali
5457
cevap kabul oranı: 0%

değiştirildi: 18 Tem '13, 04:22

CemIkta's gravatar image

CemIkta ♦
19.9k29125190


import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

public class Test {

    public static void main(String... args) {

        JFileChooser chooser  = new JFileChooser("C:\\\\\\\\");
        MyFilter f = new MyFilter();

        chooser.addChoosableFileFilter(f);

    }

}

class MyFilter extends FileFilter {

    public boolean accept(File file) {
        if (file.getName().endsWith(".java"))
            return true;
        if (file.getName().endsWith(".txt"))
            return true;
        return false;
    }

    public String getDescription() {
        return "MyDescription";
    }
}

Yukaridaki gibi kullanirsan hata ortadan kalkar.

JFileChooser'in istedigi FileFilter javax.swing.filechooser.FileFilter Bu FileFilter bir 'interface' degil soyut bir sinif ('abstract class'). Soyut bir sinif ise implements ile implemente edilmez. Soyut bir sinif extends yapilmak suretiyle kullanilir. Icinde deklare edilen tüm abstract metodlar
extends yapan sinif tarafindan implemente edilmek zorundadir.

java.io.FileFilter senin de tespit ettigin gibi bir interface. MyFilter sinifi bu FileFilter'i implemente etmek zorunda (MyFilter implements FileFilter dedigin icin).

JFileChooser'deki addChoosableFileFilter(FileFilter f) metodu parametre ismi olarak FileFilter bekliyor. Ancak cins olarak baska bir FileFilter'i yani javax.swing.filechooser.FileFilter;'ine ihtiyac duyuyor.

Zannediyorum isim benzerlikleri yüzünden bu düsünce karmasasina girmissin. Keske hepimiz senin gibi bu tip buhranlara girsek de bu sayede meselelerin icyüzünü anlama yolunda daha hizli ilerleyebilsek. :-)

Özet: Bir Class baska bir Class'i extend edebilir.

Bir Class baska bir Abstract Class'i extend edebilir. Ederse Abstract Class'in tüm abstract metod deklarasyonlarini implemente etmek zorundadir.

Bir Class bir Interface'i implements edebilir. Ederse interface'in icindeki tüm metod deklarasyonlarini implemente etmek mecburiyetindedir.

Bir Class bir Abstract Class'i implements edemez.

permanent link

cevaplandı: 17 Tem '13, 11:51

cakiral's gravatar image

cakiral
1.7k224351
cevap kabul oranı: 18%

değiştirildi: 17 Tem '13, 11:52

Bir Class baska bir Abstract Class'i extend edebilir. Ederse Abstract Class'in tüm abstract metod deklarasyonlarini implemente etmek zorundadir.

Buradaki zorunluluktan kasıt nedir? bir sınıf üzerinde farklı bir abstract sınıftan extend ettiğimde tüm metodlarını implement edebilir lakin böyle bir zorunlulukta yoktur.

(18 Tem '13, 02:48) Turgay Can Turgay%20Can's gravatar image
1

Normal bir sinif normal bir sinifi extends ederse dedigin dogru olur.

Normal bir sinif abstract olan bir sinifi extends ederse icerisindeki abstract metodlarin tamamini implemente etmek mecburiyetindedir.

Ancak abstract bir sinif baska bir abstract sinifi extends ederse bu zorunluluk ortadan kalkar. Böyle yapilirsa extends eden sinifin instance (türkcesini bilmiyorum) edilmesi mümkün olmaz.

(18 Tem '13, 03:17) cakiral cakiral's gravatar image

NetBeans IDE üzerinde bu dediğinizi yazdım. Herhangi bir mecburiyet yaratmadı.

/ * @author turgay.can / public abstract class Bar {

protected String go1() {
    return "hello";
}

public void go5(){

}

}


/ * @author turgay.can / public class Foo extends Bar {

}

kafamda muallak yarattığından yazdım. IDE (NetBeans)Herhangi bir problem yaratmadı.

Cümlede zorunluluktan öte -ebilirlik olması gerekmez mi?

(18 Tem '13, 05:07) Turgay Can Turgay%20Can's gravatar image

Vay be hiç aklıma gelmemişti açıklamalarda super olmuş bir iki kere okudum.Demek ki abstract bir class'ı implement etmeye çalışmışım Çok teşekkürler üstadım

(18 Tem '13, 07:12) ali ali's gravatar image
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,079
×13
×11
×1

Soruldu: 17 Tem '13, 06:47

Görüntüleme: 4,061 kez

Son güncelleme: 18 Tem '13, 07:17

powered by BitNami OSQA