java内部类继承类_java内部类基础(内部类继承关系 或外部类整体继承)

class WithInner {

class Inner {

Inner() {

System.out.println("this is a constructor in WithInner.Inner");

};

}

}

//默认无参构造器不好使 。有参构造器,传递外部类,用外部类的supper()去构造。

public class InnerExtendsT extends WithInner.Inner {

//InnerExtendsT() {} // Won't compile

//必须传递 外部类的引用,并调用supper()才可以。

InnerExtendsT(WithInner wi) {

wi.super();

System.out.println("this is a constructor in InheritInner");

}

public static void main(String[] args) {

WithInner wi = new WithInner();

InnerExtendsT ii = new InnerExtendsT(wi);

}

}

————————————————————————————————————————————

class Egg {

private Yolk y;// 蛋黄

protected class Yolk {

public Yolk() {

System.out.println("Egg.Yolk()");

}

}

public Egg() {

System.out.println("New Egg()");

y = new Yolk();

}

}

//当你继承了某个外围类的时候,内部类并没有发生什么特别神奇的变化。这两个内部类是完全独立的两个实体,各自在自己的命名空间内。

public class MultiExtends extends Egg {

public class Yolk {//重构了 它自身的 内部类,但是 实际上 基类的内部类并没有变化  虽然是大鸡蛋,但是还是小蛋黄

public Yolk() {

System.out.println("BigEgg.Yolk()");

}

}

public static void main(String[] args) {

new MultiExtends();

}

}

——————————————————————————————————————————————

class Egg2 {

protected class Yolk {

public Yolk() {

System.out.println("inner class initialize beforing......class initialing....");

System.out.println("Egg2.Yolk()");

}

public void f() {

System.out.println("Egg2.Yolk.f()");

}

}

public Egg2() {

System.out.println("New Egg2()");

}

private Yolk y ;// = new Yolk();构造过程之前进行引用对象的处理。

public void insertYolk(Yolk yy) {

y = yy;

}

public void g() {

if(y == null){

y = new Yolk();//运用的时候,再创建。

}

y.f();

}

}

public class MultiExtends2 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 MultiExtends2() {

System.out.println("kkkkkk");

insertYolk(new Yolk());  //重新设置之后,调用新的对象。

}

public static void main(String[] args) {

Egg2 e2 = null;

e2 = new MultiExtends2();

e2.g();

}

}

————————————————类嵌套——————————————————————————

public class MultiNestingAccess {

public static void main(String[] args) {

MNA mna = new MNA();

MNA.A mnaa = mna.new A();

MNA.A.B mnaab = mnaa.new B();

mnaab.h();

}

}

class MNA {

private void f() {

}

class A {

private void g() {

}

public class B {

void h() {

g();

f();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值