讓你目瞪口呆的“遮蔽”

其實有很多的面向對象的東西我們還不知道,
很多的東西都覺得不可思議
不知道你知道“遮蔽”嗎?
“遮蔽”其實就是聲明一個新的變量把以前的給覆蓋
同時“遮蔽”是在靜態的編譯的時候決定的使用的哪一個變量
下面舉一個例子:

public class Person
{
public int x=42;
public Person()
{

}
}


public class child extends Person
{
public int x=12;
pucli child()
{

}

}


下面是測試程序:
child child=new child();
System.out.println(child.x)
Person person=new Person();
System.out.println(person.x);
person=child;
System.out.println(person.x);

程序的輸出結果是:
12
42
42

這個結果你相信嗎?
呵呵
確實是這樣的

“遮蔽”是在靜態的編譯的時候由靜態類型決定的使用的哪一個變量
上面的例子
person=child;
其中的靜態類型是person
動態類型是child;
所以第三局的輸出結果是42
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章