内部类(九)----内部类的继承&内部类可以覆盖嘛

内部类的继承

  • 因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,会很复杂。问题在于:那个指向外围类对象的引用必须被初始化,而在导出类中不再存在可连接的默认对象。
    这里写图片描述

内部类可以被覆盖嘛?

package com2002;

/**
 * Created by Panda on 2018/6/11.
 */
class Egg {
    private Yolk yolk;

    protected class Yolk {
        public Yolk() {
            System.out.println("Egg.Yolk()");
        }
    }

    public Egg() {
        System.out.println("New Egg()");
        yolk = new Yolk();
    }
}

public class BigEgg extends Egg{
    public class Yolk {
        public Yolk() {
            System.out.println("BigEgg Yolk()");
        }
    }

    public static void main(String[] args) {
        new BigEgg();
    }
    /**
     * New Egg()
     Egg.Yolk()
     */
    //当继承了某个外围类的时候,内部类并没有发生什么特别的变化。这两个内部类是完全独立的两个实体
    //各自在自己的命名空间内
}
package com2002;

/**
 * Created by Panda on 2018/6/11.
 */
class Egg2{
    protected class Yolk{
        public Yolk(){
            System.out.println("Egg2.Yolk()");
        }
        public void f(){
            System.out.println("Egg2.Yolk.f()");
        }
    }
    private Yolk yolk=new Yolk();
    public Egg2(){
        System.out.println("New Egg2()");
    }
    public void insertYolk(Yolk yolk){this.yolk=yolk;}
    public void g(){yolk.f();}
}
public class BigEgg2 extends Egg2{
    public class Yolk extends Egg2.Yolk{
        public Yolk(){
            System.out.println("BigEgg2.Yolk()");
        }
        public void f(){
            System.out.println("BigEgg2.Yolk.f()");
        }
    }
    public BigEgg2(){insertYolk(new Yolk());}

    public static void main(String[] args) {
        Egg2 egg2=new BigEgg2();
        egg2.g();
    }
    /**
     * Egg2.Yolk()
     New Egg2()
     Egg2.Yolk()
     BigEgg2.Yolk()
     BigEgg2.Yolk.f()
     */
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值