java:關於繼承變量的值問題


1、在java中,如果子類繼承父類的靜態變量時,當你在子類面前修改這個靜態變量的值,其父類的靜態變量也會改變。

案例:

//父類
public class Animal {
  //靜態屬性
  public static int Age=1;
};

 

//子類
public class Cat extends Animal{

  //靜態方法 
  public static void print(){
    System.out.println("Animal:"+Animal.Age+"; Cat:"+Cat.Age);
  };

  //普通方法
  public void say(){
    System.out.println("Animal:"+Animal.Age+"; Cat:"+Cat.Age);
  };
};

 

測試:
public class numberMain {
  public static void main(String[] args) {

    Cat c=new Cat();
    c.say();
    Cat.print();

    System.out.println("改值后:");
    Cat.Age=5;

    c.say();
    c.print();
  }
};

 

2、問題:如果子類繼承父類的變量時?當修改這個子類變量時父類的值會不會也改變?

案例:
 //父類
 public class Animal {
   public int height=1;
 };

 

 //子類
 public class Cat extends Animal{
   //public int height=1;
   public void setHeight(int _h){
     this.height=_h;
   };

   public int getHeight(){
     return height;
   }


   public void say(){
     //子類的值
     Animal a=new Animal();

     System.out.println("Animal類:"+a.height+"; Cat類:"+this.height);
   };
 };

 

 測試:
 public class numberMain {
       public static void main(String[] args) {

             Cat c=new Cat();

             System.out.println("沒修改前:");
             c.say();

             System.out.println("沒修改后:");
             c.setHeight(5);
             c.say();

      } 
  };

 

 結果:
  沒修改前:
  Animal類:1; Cat類:1
  沒修改后
  Animal類:1; Cat類:5

   由此可見:當你改變父類的普通變量時,子類的變量不會改變,但是如果是靜態變量,一旦修改父類靜態變量值,子類靜態變量的值也會變。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com