匿名内部类脑补

一、概念



匿名内部类,就是没有名字的内部类结构,因为其没有类名,所以也没有构造函数,初始化的时候使用的是构造块

它的具体实现过程如下

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



二、程序解析


(1)继承抽象类的的实现方式

abstract class Person {
    public abstract void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

运行结果:eat something


(2)继承接口的实现方式

水电费

interface Person {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}
运行结果:eat something

(3)在线程上的应用

public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}
运行结果:1 2 3 4 5


三、注意事项


(1)使用时必须继承一个类或者实现一个接口,只能是一个。

(2)没有类名,不能够定义构造函数

(3)不能存在任何的静态成员变量和静态方法

(4)为局部内部类,局部内部类的限制对匿名同样有效

(5)当方法的形参要在匿名内部类中使用时,该形参必须为final

为什么要用final:因为虽然外部的参数看似传进来了,但是实际上内部类中调用的是自己的属性,而不是外部方法传递的参数

我们使用final来使这个应用不可改变。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值