Java中接口与实例化
一.问题引入
前两天学代理模式的时候想到的,接口可不可以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 ,