父類和子類有相同成員變量時的例子


今天看到一個有趣的程序,如下:

public class Test { 
  
     public static void main(String[] args){ 
         B b=new B(); 
         b.bb(); 
     } 
} 
class A{ 
private String  a="a";
     public void visit(){ 
    System.out.println(this.a);
         System.out.println(this.getClass()); 
     } 
} 
class B extends A{ 
      private String a = "b";
     public void bb(){ 
         visit(); 
     }    
}

程序的輸出結果是:
a
class B
在java程序中父類的成員變量和子類的成員變量具有相同的名字,且在父類中將該變量打印出來。這個變量是用this指針指向的。
對於this的說明。1.this關鍵字一般出現在類的方法聲明中。2.哪個對象調用這個方法,this就指向哪個對象。 
因此這里的this指的是實例B。當然getClass得到的是B

對於為什么父類和子類中有相同成員變量時,輸出的是A的變量問題。我查閱了一下。感覺在Java瘋狂講義中的面向對象講義中講述的比較靠譜。如下:

與方法不同,對象的屬性不具備多態性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM