- (提醒)成員變量和靜態方法出現在子類中,我們一般稱之為隱藏,請看下面的代碼,不要被子類中“覆寫”的靜態方法所迷惑。
- 其實成員變量(無論是靜態、實例、任何訪問權限)、靜態方法、私有方法都是靜態綁定。
package cn.jxau.yuan.sharWeb;
/**
* Created by 編程只服JAVA on 2017.06.06.
*/
public class ExtendsTest {
int weight = 121;
static void show(){
System.out.println("Father");
}
}
class Sub extends ExtendsTest{
int weight = 123;
/**
* 父類中的成員變量和靜態方法出現在子類中,我們一般稱之為隱藏
*/
static void show(){
System.out.println("son");
}
public static void main(String[] args) {
ExtendsTest extendsTest = new Sub();
System.out.println("向上轉型進行調用:.......");
extendsTest.show();
System.out.println(extendsTest.weight);
System.out.println("直接調用:...............");
Sub sub = new Sub();
sub.show();
System.out.println(sub.weight);
}
}
運行結果:
image.png
super:某老師
super關鍵字:表示父類的綁定特征
通過super到子類所繼承的父類中找到與父類綁定的屬性和方法
語法:super.父類中的屬性or方法super用于調用父類中定義的屬性和成員方法
覆蓋的方法都是跟子類綁定的,所以找不到與父類動態綁定的私有屬性,所以需要通過super關鍵字找到父類靜態綁定的方法和動態綁定的屬性
PS:super不能出現在靜態方法里,因為靜態方法都是通過類調用的,不能接收this指針super在構造方法的作用:
通過super來顯示指定調用父類的哪個構造方法,同時給該構造方法傳參數
語法:如果要顯示調用父類的某個構造方法,就必須放在子類構造方法的第一句并且傳進對應的參數,只能寫一條!
子類構造方法(String name){
Super(name);//就會找父類的參數簽名為String的構造方法,把this指針傳給該構造方法
}