02.匿名内部类

Posted 我是旺旺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02.匿名内部类相关的知识,希望对你有一定的参考价值。

描述:匿名内部类就是内部类的简化写法。

前提条件:存在一个类或者接口,这里的类可以是具体的类,也可以是抽象类。

格式:

  固定格式写法(无理由的):

  new 类名或者接口名() {

    重写方法;

  }

 

匿名内部类本质:

  就是一个继承了该类或者实现了该接口的子类匿名对象。

  该对象为:

new Inter() { //多态
            public void show() {
                System.out.println("show");
            }
            
            public void show2() {
                System.out.println("show2");
            }
        }

 

具体实例:

/*
    匿名内部类
        就是内部类的简化写法。

    前提:存在一个类或者接口
        这里的类可以是具体类也可以是抽象类。
    
    格式:
        new 类名或者接口名(){
            重写方法;
        }
        
    本质是什么呢?
        是一个继承了该类或者实现了该接口的子类匿名对象。
*/
interface Inter {
    public abstract void show();
    public abstract void show2();
}

class Outer {
    public void method() {
        //一个方法的时候
        /*
        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();
    }
}

 

以上是关于02.匿名内部类的主要内容,如果未能解决你的问题,请参考以下文章

JDK8--02:为什么要使用lambda

匿名对象,封装,构造代码块静态代码块内部类匿名内部类

java内部类的匿名内部类

50java 匿名内部类剖析

代码片--练习匿名内部类

匿名内部类创建线程,简化线程创建代码