關於子類繼承父類後呼叫方法的問題
阿新 • • 發佈:2019-01-24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
class ParentClass
{
public String
msg = "I
am a attribute in ParentClass." ;
public String
getMsg() {
return msg;
}
}
class ChildrenClass extends ParentClass
{
public String
msg = "I
am a attribute in ChildrenClass." ;
}
public class TestClass
{
public static void main(String[]
args) {
ParentClass
p = new ParentClass();
ChildrenClass
c = new ChildrenClass();
System.out.println(p.getMsg());
System.out.println( "" );
System.out.println(c.getMsg()); //沒有重寫,還是呼叫父類中的方法。
}
}
|
輸出結果是:
I am a attribute in ParentClass.
I am a attribute in ParentClass.
在子類沒有重寫父類中的方法時,呼叫的是父類中的方法,在呼叫方法時,總是先去找有沒有子類擴充套件的方法,如果沒有就去父類中找,這裡子類並沒有擴充套件父類的方法。
自己重寫了就呼叫自己的,自己沒重寫就呼叫父類的。
2,動態繫結
當建立子類的物件的時候(new 子類()) 在左邊給的是父類的引用,即 父類 引用名 = new 子類()
系統動態綁定了引用的實際型別。