继承执行顺序

 继承执行顺序

   public class DifficultTest { 
      public static void main(String[] args) {  
       System.out.println(new B().getValue());                             
      } 
      static class A {  
           protected int value;  
           public A(int v) {      
            System.out.println("public A(int v)执行了");
            setValue(v); 
       }  
       public void setValue(int value) {   
            System.out.println("AsetValue(int Value)执行了"); 
            this.value = value; 
       }  
       public int getValue() {      
            System.out.println("AgetValue()执行了"); 
            try {    
                 value++; 
                 return value;                                          //执行getValue返回的结果
            } finally {                                                      //finally是一定执行的块
                 setValue(value);
                 System.out.println(value);
            }  
           } 
      } 
  static class B extends A {  
        public B() { //子类的this   
        super(5);
        setValue(getValue() - 3); 
        System.out.println("public B()执行了");  
       }  
       public void setValue(int value) { 
            super.setValue(2 * value); 
            System.out.println("BsetValue(int value)执行了");  
           } 
      }
 }

 返回结果为:

public A(int v)执行了                                          v=0
 * AsetValue(int Value)执行了                            v=10
 * BsetValue(int value)执行了                            v=10
 * AgetValue()执行了                                         v=11
 * AsetValue(int Value)执行了                            v=22
 * BsetValue(int value)执行了                             v=22
 * 22                                                                   v=11(getValue返回value值为11)  
 * AsetValue(int Value)执行了                            v=16
 * BsetValue(int value)执行了                             v=16
 * public B()执行了                                              v=16
 * AgetValue()执行了                                          v=17
 * AsetValue(int Value)执行了                             v=34
 * BsetValue(int value)执行了                              v=34
 * 34
 * 17                                                                    v=17 (getValue返回value值为17)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值