Java匿名内部类详见

基于接口的匿名内部类

class Outer04 { //外部类
    private int n1 = 10;//属性
    public void method() {//方法
        //基于接口的匿名内部类
        //1.需求: 想使用IA接口,并创建对象
        //2.传统方式,是写一个类,实现该接口,并创建对象
        //3. 可以使用匿名内部类来简化开发
        //4. tiger的编译类型 ? IA
        //5. tiger的运行类型 ? 就是匿名内部类  Outer04$1
        /*
            我们看底层 会分配 类名 Outer04$1
            class Outer04$1 implements IA {
                @Override
                public void cry() {
                    System.out.println("老虎叫唤...");
                }
            }
         */
        //6. jdk底层在创建匿名内部类 Outer04$1,匿名内部类其实也有名字即 外部类+$+1 ,
        //然后立即马上就创建了 Outer04$1实例,并且把地址返回给 tiger
        
  class Outer04 {
    private int n1 = 10;

    public void method() {
        IA ia = new IA() {
            @Override
            public void cry() {
                System.out.println("老虎叫唤...");
            }
        };
        ia.cry();
        System.out.println(ia.getClass());//输出了ia的运行类型
        
}

interface IA {
    public abstract void cry();
}

基于类的匿名内部类

class Outer04 {
    private int n1 = 10;

    public void method() {
        Father father = new Father("jack") {//这里匿名内部类(Outer04$1)继承了Father类
            int n2 = 10;
            @Override
            public void test() {
                System.out.println("匿名内部类重写了test()方法..");
            }
        };
        System.out.println(father.getClass());
        father.test();


        Animal animal = new Animal() {
		//由于继承的关系,继承抽象类就必须实现抽象类所有的方法
            @Override
            void eat() {
                System.out.println("小狗吃骨头...");
            }
        };
        animal.eat();

    }
}


class Father {
    public Father(String name) {
        System.out.println("接收到的name: " + name);
    }
    public void test() {
    }
}

abstract class Animal {//抽象类
    abstract void eat();
}

附:该篇文章仅用于记录所学知识,如有误导敬请海涵!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值