一.问题引入
前两天学代理模式的时候想到的,接口可不可以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() {@Overridepublic 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();}}
相关文章
- 10-02ocx 调用 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“bf7e992c-393f-4626-bcf5-bbab7f81b2dd”
- 10-02HNU_小中初数学学习软件(可视化编程)_结对项目总结与体会
- 10-02《Web接口开发与自动化测试 -- 基于Python语言》 ---前言
- 10-02在Scala 中 val 与 var 的区别(言简意赅 小白易懂 实例代码)
- 10-02gRPC 中泛化调用服务接口
- 10-02[转]Vue中Vuex的详解与使用(简洁易懂的入门小实例)
- 10-02Java中与数据库对应操作的方法名怎么取比较合适
- 10-02Spring - 实例化与延迟实例化
- 10-02我的Mapper类应该注入到我的控制器中还是可以直接实例化它?
- 10-02[Vue]实例化Vue时的两种挂载方式el与$mount