• Java匿名内部类解析


    🌈🌈😄😄

    欢迎来到茶色岛独家岛屿,本期将为大家揭晓Java匿名内部类,做好准备了么,那么开始吧

    🌲🌲🐴🐴

    目录

    一.定义

    二.格式

    三.匿名内部类的特点

    四.使用匿名内部类场景

    五.使用匿名内部类时注意事项


    一.定义

    匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。

    一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类

    二.格式

    new 父类构造器(实参列表)| 实现接口(){
    // 匿名内部类的类体部分
    }

    三.匿名内部类的特点

    •  匿名内部类必须继承父类或实现接口
    •  匿名内部类只能有一个对象
    •  匿名内部类对象只能使用多态形式引用

    1. interface A{
    2. public abstract void fun1();
    3. }
    4. public class Outer{
    5. public static void main(String[] args) {
    6. new Outer().callInner(new A(){
    7. //接口是不能new但此处比较特殊是子类对象实现接口,只不过没有为对象取名
    8. public void fun1() {
    9. System.out.println("implement for fun1");
    10. }
    11. }); // 两步写成一步了
    12. }
    13. public void callInner(A a) {
    14. a.fun1();
    15. }
    16. }

    出现new但并没有指定对象名称,则为匿名对象

    上面所说,接口是不能new的,可能很多小伙伴会有疑惑,看下面代码

    1. new Thread(new Runnable() {
    2. @Override
    3. public void run() {
    4. for(int i = 0;i<=40;i++){
    5. ticket.sell();
    6. }
    7. }
    8. },"C").start();

    上述中是使用了匿名内部类的方法,用new是为了实现Runnable接口,重写方法,只不过这个类是匿名的,没有名字,并且对象的创建最终都是需要调用构造方法,接口中是没有构造方法的,类中显示声明构造方法,但默认有空参构造方法,接口中是没有的

    四.使用匿名内部类场景

    • 只用到类的一个实例
    • 类在定义后马上用到
    • 类包含内容少

    五.使用匿名内部类时注意事项

    1. 使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
    2. 匿名内部类中是不能定义构造函数的,不能有构造方法。
    3. 匿名内部类中不能存在任何的静态成员变量和静态方法。
    4. 匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
    5. 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。
    6. 匿名内部类不能是public,protected,private,static。
    7. 只能创建匿名内部类的一个实例。
    8. 一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。



    匿名内部类是内部类的一种特殊情况。它只有一个实例,而且没有引用。所以,一般在能用内部类实现,但是实例只用一次的情况下使用它(可以减少资源开销)。

     

  • 相关阅读:
    C/C++程序员技术发展方向(强烈推荐!!)
    【PyTorch】深度学习实践之 RNN基础篇——实现RNN
    小程序InnerAudioContext设置问题记录
    【Python数据分析】matplotlib绘图
    Java面向对象2
    java项目之戒烟网站(ssm+vue)
    【UE5 C++ 學習日志】01. UEnhancedInput
    Windows环境下Qt Creator控制台输出中文乱码解决方法
    logback-spring.xml配置文件标签(超详解)
    Prevalence and prevention of large language model use in crowd work
  • 原文地址:https://blog.csdn.net/weixin_62275996/article/details/127654961