JAVA匿名内部类

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

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,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖;覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果。
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值