当前位置:  技术问答>java相关

急:内部类的继承问题?

    来源: 互联网  发布时间:2015-04-21

    本文导语:  急:内部类的继承问题?  JAVA编程思想第七章(P172)问题:  /*本程序演示如何从内部类继承*/  package c07;  class Egg2  {  protected class Yolk  {  public Yolk()  {  System.out.println("Egg2.Yolk()");  }  public void f()  {  Syste...

急:内部类的继承问题? 
JAVA编程思想第七章(P172)问题: 
/*本程序演示如何从内部类继承*/ 
package c07; 
class Egg2 


protected class Yolk 

public Yolk() 

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


public void f() 

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


//以上定义了内部类Yolk,它有两个public方法Yolk和f。 
private Yolk y=new Yolk(); 
public Egg2() 

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


public void insertYolk(Yolk yy) 

y=yy; 


public void g() 

y.f(); 



public class BigEgg2 extends Egg2 


public class Yolk extends Egg2.Yolk //重载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 e2=new BigEgg2(); 
e2.g(); 



它的运行结果是: 
Egg2.Yolk() 
New Egg2() 
Egg2.Yolk() 
BigEgg2.Yolk() 
BigEgg2.Yolk().f() 
请问它运行的顺序是怎样的?谢谢! 



__________________
step by step


|
1。一切从Main()开始,它是第一接口。
2。Egg2 e2 = new BigEgg2() 含有constructor调用new BigEgg2(), 又因
   BigEgg2 derived from Egg2, 所以先对Egg2初始化。初始化Egg2由class
   级对象y(语句:private Yolk y = new Yolk())开始。因为new  Yolk()才
   产生第一个输出“Egg2.Yolk()".
3. Egg2.Yolk()的第二次输出是由于BigEgg2对Egg2的方法(insertYolk())的
   调用而触发Yolk()的constructor引起的。
4。类的自动初始化只针对其constructor及不包含在其方法内的变量和对象。
5。该方法曾在BigEgg2的constructor里被调用过。

|
class Egg2 { 

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

      public void f(){ 
         System.out.println("Egg2.Yolk.f()"); 
      } 
   } 
//以上定义了内部类Yolk,它有两个public方法Yolk和f。 
   private Yolk y=new Yolk(); //类的实例不在方法中,所以它先执行。故先输出一个"Egg2.Yolk()";第一次
   public Egg2() { 
      System.out.println("New Egg2()"); //这是第二次输出。
   } 

   public void insertYolk(Yolk yy) { //这里又对Yolk 进行了一次construct。故再输出一次"Egg2.Yolk()".第三次
      y=yy; 
   } 

   public void g() { //此处调用的是子类的。
      y.f(); 
   } 


public class BigEgg2 extends Egg2 { 

   public class Yolk extends Egg2.Yolk {//父类的完了以后调用子类的construct.故这是第四次输出。 
      public Yolk() { 
         System.out.println("BigEgg2.Yolk()"); 
      } 

      public void f(){ 
         System.out.println("BigEgg2.Yolk().f()"); 
      } 
   } 

   public BigEgg2(){//父类的construct 完了,开始子类的。调用了父类的方法
      insertYolk(new Yolk()); //在这里又对Yolk 进行construct.
   } 

   public static void main(String[] args) { 
      Egg2 e2=new BigEgg2(); //开始construct.由于包含继承,所以先去找Egg2类
      e2.g(); //constuct结束,开始e2.g();调用子类的g()方法。
   } 
}

|
始化顺序:
1。单一类(Class)      :先初始化类中的Class变量,然后是构建器中的代
                        码(包含相应的方法调用)。
2。内部类(Inner Class): 先初始化内部类,后外部类。
3. 构建器(Constructor):先初始化父类的构建器,再初始化子类的构
                        建器。(只要调用类的对象,就会自动查找该类的
                        构建器)

    
 
 

您可能感兴趣的文章:

  • java继承的问题
  • 问一个很蠢的问题:什么是重载,继承,实例,派生,接口
  • 子进程继承锁的问题
  • 关于类的继承问题!着急!
  • 关于多重继承问题的答谢,请pengji(彭乃超)来领分!
  • 关于多重继承问题的答谢,请ajoo(jet pig)来领分!
  • 关于多重继承问题的答谢,请mygarfield((我被CSDN封杀过)) 来领分!
  • 关于多重继承问题的答谢,请Dickensi(流星·逐日)(★★★★) 来领分!
  • 菜鸟问题:请大家用简单的代码描述一下,如何利用接口实现多重继承!
  • 问一个继承编译的问题,急!!!!!
  • 关于继承和覆盖的问题
  • 又是一个继承问题
  • 一个继承的问题
  • 关于继承的问题。。。。。
  • 关于子类继承父类的问题,很简单的。进来看看吧
  • 关于继承和实现的一个一般问题
  • 简单的继承问题..........
  • 有关Java构造函数的问题之三——继承性
  • 关于引用传递/继承,解决问题,立即结贴
  • 关于父类static 方法继承的问题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java没有多继承,用接口来实现多继承的功能,但哪里体现了多继承啊?我对接口的概念一直弄不清楚,请大家帮忙!
  • C++多重继承与虚继承分析
  • 关于java的访问控制和继承,这段话怎么理解?
  • 接口继承类是怎么一回事?
  • 如何使JPanel中的一个继承JPanel的组件的尺寸发生动态改变???
  • 想继承统一软件包里的类怎么办?
  • 如何让exec出的进程继承原来打开的流?
  • fork出来的进程不能完全继承父进程的属性吗?
  • 急!我使用一个继承了JComponent的类绘图,我想将绘的图绘到Image,有什么办法吗?
  • 子进程为什么没有继承父进程的信号
  • jb中如何编译带继承的class,是否需要把父类import进来,应怎么样写?(新手,线等)
  • 怎样用接口(interface)实现多重继承?
  • 怎么把一个自己的编写的没有继承任何类的类destroy掉
  • 从jFrame继承的窗口,怎样初始为最大化?
  • 异常的继承和搜索??高手请进!!
  • 继承一个protected函数,怎样在子类中让它完成父类的功能
  • docker中文入门学习手册 iis7站长之家
  • 从线称组继承为什么不行?(在线等待,搞定立即给分)
  • 继承!!!
  • 如何安装GMA 900的继承显卡驱动


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3