面向对象练习题



   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=5
 * AsetValue(int Value)执行了v=10
 * BsetValue(int value)执行了v=10
 * AgetValue()执行了              v=11
 * AsetValue(int Value)执行了 v=22
 * BsetValue(int value)执行了v=22
 * 22(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(getValue返回value值为17)



猜你喜欢

转载自blog.csdn.net/qq_40181007/article/details/80054846