JAVA匿名内部类

做~自己de王妃 提交于 2020-01-15 23:09:53

匿名内部类是一种特殊的局部内部类,这种内部类没有类名。适用于只使用一次并且不需要多次创建对象的类。使用匿名内部类可以使类代码与创建对象同时完成,提高代码的可维护性与灵活性。

package JAVA_Project_01_05;

//匿名内部类是一种特殊的局部内部类,这种内部类没有类名。适用于只使用一次并且不需要多次创建对象的类。使用匿名内部类可以使类代码与创建对象同时完成,提高代码的可维护性与灵活性。

//使用匿名内部类的技术要点如下:
//
//· 匿名内部类的语法格式:“new实现的接口名或继承的类名(){};”。
//
//· 匿名内部类是惟一一种没有构造方法的类。所以匿名内部类的使用范围有限。大部分匿名内部类用于接口的回调。
//
//· 匿名内部类在编译时由系统自动起名为Out$1.class。
//
//· 匿名内部类用于继承其他类或实现接口,并不需要增加额外的方法,只是对继承方法的实现与重写。


interface AnonymityInter {//定义一个接口

    public void method();

}

abstract class AnonymityAbstract {//定义一个抽象类

    int count;

    abstract void method();

}

class AnonymityClass {//定义一个类

    public void method() {

        System.out.println("这是一个普通的类");

    }

}

public class TextAnonymity {//操作匿名内部类的类

    public static void main(String[] args) {//Java程序主入口处

        AnonymityInter inter = new AnonymityInter() {//实现接口的匿名内部类

            public void method() {//实现接口中的方法

                System.out.println("在匿名内部类中实现接口的方法");

            }

        };

        inter.method();//调用方法

        AnonymityAbstract aa = new AnonymityAbstract() {//实现抽象类的匿名内部类

            {

                count = (int) (10 * (Math.random() + 1));//随机获得数字

            }

            @Override
            void method() {//重写方法

                System.out.println("您的幸运数字是:" + count);

            }

        };

        aa.method();//调用方法

        AnonymityClass ac = new AnonymityClass() {//实现普通类的匿名内部类

            public void method() {//覆盖类的方法

                System.out.println("覆盖类的方法");

            }

        };

        ac.method();//调用方法

    }

}

/*
(1)在程序中包含用匿名内部类实现接口的方法、继承抽象类重写方法以及对普通类的方法进行重写。在重写抽象类的匿名内部类中,在语句中定义要初始化的数字需要将初始化的数字放入大括号中,否则编译不通过。
(2)在实现普通类的匿名内部类中,对method()方法进行重写,覆盖了原普通类中方法的实现。重写也称为覆盖,满足覆盖需要注意:覆盖的方法的返回值必须和被覆盖的方法的返回值一致;覆盖的方法所抛出的异常必须和被覆盖的方法所抛出的异常一致,或者是其子类;被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖;覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果。
 */
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!