您的位置:首页 > 编程语言 > Java开发

Java中接口与实例化

2017-01-07 15:02 218 查看
一.问题引入

        前两天学代理模式的时候想到的,接口可不可以new呢?

        接口是特殊的抽象类,接口的方法都默认为  public  abstract  的。。。 抽象的方法不能new的哦,不能被实例化,为什么new
ActionListener(){} 可以?不多说了,直接看资料。

二.若干资料

        Java不能同时继承多个类,但是可以继承多个接口;接口可以用来变相的继承多个类;为什么new ActionListener(){} 可以这样,接口可以被new吗?new
ActionListener(){} 这种形式,是要在{}中重写接口中的方法。接口不能new ,不过可以生成一个匿名类,当然,匿名类不止实现接口这一种。省略了写一个具体类实现ActionListener接口的开销。

       
接口不能直接new,但是它可以作为别的类的变量。如果有类实现了这个接口,则可以new! 举一个简单的例子:java.lang.List是一个接口,但是List<String> list=new ArrayList<String>();是没有任何错误的,因为ArrayList实现了List接口。
接口编程是为了实现多继承,在java web中的spring框架下用到十分多。

三.简单例子

实现匿名类。最简单的线程类,可以这么写。
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
});
----------------------------------------------------------------------------------------------------------

class Test {
int start=1;
int end=100;
public static void main(String[] args) {
new Test().go();
}

void go() {
Runnable a=new Runnable() {
public void run() {
for(int i=start;i<end;i++)
System.out.println(i);
}
};
Thread t=new Thread(a);
t.start();
}
}

Java的接口是肯定不能被实例化的,只能通过接口的实现类去创建实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: