深入理解java匿名内部类(详细)
匿名内部类
匿名内部类是没有名字的类,它主要是为了重写抽象类和接口中的抽象方法(全部)
下面通过代码演示可以清晰的感受到匿名内部类的用法及优点
1.省略继承的过程
public class NoName { public static void main(String[] args) { persion p1 = new xiaoming(); persion p1 = new persion(); p1.show(); } } // abstract class persion{ abstract void show(); } // class xiaoming extends persion{ @Override void show() { System.out.println("我是小明"); } }
这是在没有使用匿名内部类时常用的写法.
public class NoName { public static void main(String[] args) { persion p1 = new persion() { @Override void show() { System.out.println("匿名内部类:小明"); } }; p1.show(); } } // abstract class persion{ abstract void show(); }
在通过使用匿名内部类的时候省去了创建xiaoming类去继承抽象类的过程.注意匿名内部类是隐式继承,不是不继承.
2.匿名内部类在接口中的使用
public class NoName { public static void main(String[] args) { nonameclass aa = new xiaoming(); aa.show(); } } interface nonameclass { void show(); } class xiaoming implements nonameclass{ @Override public void show() { System.err.println("我是小明"); } }
上面代码是常见实现类重写接口中的抽象方法.
public class NoName { public static void main(String[] args) { nonameclass p1 = new nonameclass() { @Override public void show() { System.out.println("匿名内部类小明"); } }; p1.dodo(); } interface nonameclass { void show(); }
通过匿名内部类省略了创建实现类的过程.所以合理使用匿名内部类可以优化我们的代码.
匿名内部类写法:
new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 因为匿名内部类没有名字,为了方便理解可以这样想,没有类名,应该省去class与extends关键字 new (class xiaoming extends) persion{ @Override void show() { System.out.println("我是小明"); } }
上一篇:
IDEA上Java项目控制台中文乱码