1、认识匿名内部类 /* 匿名内部类 就是内部类的简化写法。 前提:存在一个类或者接口 这里的类可以是具体类也可以是抽象类。 匿名内部类的格式: new 类名或者接口名(){ 重写方法; };这代表的是一个子类对象 本质是什么呢? 是一个继承了该类或者实现了该接口的子类匿名对象。 */ interface Inter { public abstract void show(); public abstract void show2(); } class Outer { public void method() { //接口里面只有一个方法的时候,只有show() /* new Inter() { public void show() {//在匿名内部类里面重写接口或者抽象类的方法。 System.out.println("show"); } }.show(); */ //二个方法的时候 /* new Inter() { public void show() { System.out.println("show"); } public void show2() { System.out.println("show2"); } }.show(); new Inter() { public void show() { System.out.println("show"); } public void show2() { System.out.println("show2"); } }.show2(); */ //如果很多个方法,就很麻烦了.所以选择使用参数接收这个对象,然后使用对象调用方法就可以了。 Inter i = new Inter() { //接口的实现子类的对象给接口,多态 public void show() { System.out.println("show"); } public void show2() { System.out.println("show2"); } };//注意这里的分号 i.show(); i.show2(); } } class InnerClassDemo6 { public static void main(String[] args) { Outer o = new Outer(); o.method(); } } 2、匿名内部类在开发中的使用 通过一个案例简单演示: interface Person { public abstract void study(); } class PersonDemo { public void method(Person p) {//这种方式,在前面介绍参数类型是引用类型的时候已经介绍过了。 //见博客(http://blog.csdn.net/qq_32059827/article/details/51344046) p.study(); } } //实现类 class Student implements Person { public void study() { System.out.println("好好学习,天天向上"); } } class InnerClassTest2 { public static void main(String[] args) { //测试 PersonDemo pd = new PersonDemo(); Person p = new Student(); pd.method(p); System.out.println("--------------------"); //匿名内部类在开发中的使用 //结果和上面一模一样,使用匿名内部类的方式,可以节省内存空间。使用场景,方法比较少的时候使用。 pd.method(new Person(){ public void study() { System.out.println("好好学习,天天向上"); } }); } }