当前位置:编程学习 > JAVA >>

接口能不能被实例化。



在匿名类中实例化~

上代码:帮忙解释下.....


--------------------编程问答-------------------- 这是匿名的内部类
并不是FileNameFilter的实例化,

而是定义了一个内部类,实现了accept接口,同时返回一个实现了接口的对象。

该代码等效于

class A implements FileNameFilter
{

public void accept(File f,String s)
{
 //实现接口
}
}

dir.list(new A()) --------------------编程问答-------------------- ps.
接口不实例化,
实现了接口的类才能被实例化。 --------------------编程问答-------------------- new 接口或者抽象类()
{
       方法
}

这种写法 返回的是接口或者抽象类的子类对象
名称叫 匿名内部类 --------------------编程问答-------------------- 接口不能被实例化,楼主代码
是匿名内部类的方式 --------------------编程问答-------------------- 使用匿名内部类返回接口的实现类的对象 --------------------编程问答-------------------- 匿名内部内,哈哈。 --------------------编程问答-------------------- 同一楼... --------------------编程问答-------------------- 匿名内部实现类

同下:

Thread thread = new Thread(new Runnable(){
  
   public void run(){
         ...
   }

}); --------------------编程问答-------------------- 这是内部类的一种 --------------------编程问答-------------------- 同一楼!!!!!!!!!!! --------------------编程问答-------------------- 接口不能被实例化,但是接口变量可以引用一个实现了接口的类的对象! --------------------编程问答-------------------- 如果一个类的用处非常小,可能就在那一块用一下就不再用,这样的代码我们一般用匿名的实类化方式。匿名类其是是一个类或接口的子类,无论是接口,抽像的、不抽像的类都可以用匿名类对方法进行重写,以及加入有用的属性等待。匿名类是把定义和初始化放在一起实现的,也就意味着这一段代码的重用性很少。 --------------------编程问答-------------------- 举个例子。。。

java.io.Serializable ser = new Serializable(){};
--------------------编程问答-------------------- 接口被继承,然后实例化继承类 --------------------编程问答-------------------- 关于JAVA内部类:一个内部类的定义是定义在另一个类内部的类。
  存在它的原因是:
  1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。即内部类实例对包含它的哪个类的实例来说,是特权的。
  2.对于同一个包中的其他类来说,内部类能够隐藏起来,换句话说,内部类不管方法的可见性如何,那怕是public,除了包容类,其他类都无法使用它。
  3.匿名内部类可以很方便的定义回调。
  4.使用内部类可以非常方便的编写事件驱动程序。

其实它真正的目的仅仅为了定义回调--进一步就是事件驱动。
接口和回调:编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发生时回调对象上的方法。 --------------------编程问答-------------------- 接口不能被实例化,接口对象只能接受实现了此接口类的对象,这是实现的对象的多样化, --------------------编程问答--------------------
引用 2 楼 N27741 的回复:
ps.
接口不实例化,
实现了接口的类才能被实例化。


++1 --------------------编程问答-------------------- 可以参照一下,java.util.MAP,与java.util.HashMap. --------------------编程问答-------------------- 你这个相当于实现 并复写FileNameFilter接口的 accept方法 --------------------编程问答-------------------- 匿名子类的实例 --------------------编程问答-------------------- swing里面实现监听 ,这种写法很多,去看看就懂了 --------------------编程问答--------------------
引用 16 楼 shujia_zaibeijing 的回复:
接口不能被实例化,接口对象只能接受实现了此接口类的对象,这是实现的对象的多样化,

+1 --------------------编程问答-------------------- 接口怎么能实例化呢,接口是用来实现的 --------------------编程问答-------------------- 路过,楼主的写法相当于写了一个类实现了FilenameFilter接口,只是这个类是没有指定名字的,后面会有{...}就是要重写FilenameFilter接口中的方法的,因为楼主的意图是只让这个类在此处用到,所以这种实践是良好的实践,可见楼主对Java了解较深,然后匿名的类用了new关键字就相当于创建了一个对象,所以这种实例化过程与单独编写一个类实现FilenameFilter接口的效果是相似的,只不过后者可以再多处用到,可以复用。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,