Java程序的运行过程

What will be printed when you execute the following code?

class C {
     C() {
         System.out.print( "C" );
     }
}
 
class A {
     C c =  new C();
 
     A() {
         this ( "A" );
         System.out.print( "A" );
     }
 
     A(String s) {
         System.out.print(s);
     }
}
 
class Test  extends A {
     Test() {
         super ( "B" );
         System.out.print( "B" );
     }
 
     public static void main(String[] args) {
         new Test();
     }
}
以上是一个案列。开始的时候,我以为是输出BB,但是答案却是CBB,这让我有点不理解.当执行到new Test()这一条语句的时候,会去调用Test类的

构造方法,Test类中又调用了父类A的带参数的构造方法,程序会转到A类中执行A类的构造方法。开始我以为是顺序原因,把  C c = new C();这条语句

放到构造方法后面去执行。结果不变,所以不是这个原因,在执行A类的构造方法时,JVM 会编译A类,然后加载进内存,运行的时候,运行的时候A类中有C类,所以还会把

C类也一起加载。所以结果会是这样

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值