1. 程式人生 > >父類和子類有相同成員變量時的例子

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

log out 程序 main tcl ext 裏的 .get bsp

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

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瘋狂講義中的面向對象講義中講述的比較靠譜。如下:

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

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