java繼承中super關鍵字的用法
阿新 • • 發佈:2019-02-10
今晚複習了下java繼承類super關鍵字的用法,看了一個例題,看似簡單其實特別容易錯,筆試題經常出現這種型別的題,下面來分享下此類題:
package study; class Base{ public String name; public Base(){ name="jack"; } public Base(String pName){ name=pName; } public void Sample(){ System.out.println(name); } } class Children extends Base{ public Children(){ super("child1");// name="child2"; } } public class Method { public static void main(String[] args) { Children c=new Children(); c.Sample(); } }
大家猜猜輸出結果是什麼?不信你先寫出答案,再動手上機操作下,估計很多初學者都會做錯。我當時也是百思不得其解,後面看到super關鍵字的用法才恍然大悟:
在Java中,super關鍵字有兩個主要用途;
第一種用途是:在子類的構造方法中,super關鍵字可以顯式地呼叫父類的構造方法,用於將引數傳遞給它;
其一般語法是:
super(實際引數);
需要注意的是:該語句必須是子類構造方法的第一條語句。
如果父類和子類中有同名成員,在子類中預設訪問是屬於自己的那一個成員;
super關鍵字可以明確地指定要訪問父類中的成員;
其一般語法是:
super.成員名;
前提條件是:父類中的該成員不是private的。
看到這裡,我想大家應該知道輸出結果了吧!(child2)