亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

構造方法中為什么加super();這個東西??

虛心求教老師;構造方法中為什么加super();這個東西??默認生成的構造方法都會有這個,為什莫是這個super()具體做什莫,感覺寫了也和沒寫一樣

正在回答

4 回答

要講super就不能不提this,下面從4個角度講解一下super(需要對比的時候拿this對比一下,加深理解)
1. super關鍵字表示超(父)類的意思。this變量代表對象本身。
2. super訪問父類被子類隱藏的變量或覆蓋的方法。當前類如果是從超類繼承而來的,當調用super.XX()就是調用基類版本的XX()方法。其中超類是最近的父類。
3.調用super() 父類構造函數的時候只能調用在子類構造函數的第一行
4.this只能在類中的非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能出現this。并且this只和特定的對象關聯,而不和類關聯,同一個類的不同對象有不同的this

例如:
? ?class Person { ?
? ? ? ?protected void print() { ?
? ? ? ? ? System.out.println("The print() in class Person."); ?
? ? ? ?} ?
? ?} ? ? ? ?
? ?public class DemoSuper extends Person { ? ? ? ?
? ? ? ?public DemoSuper(){ ? ? ? ?
? ? ? ? ? super(); //調用父類的構造方法,而且放第一行,如果不寫,系統自動加 ?
? ? ? ?} ?
? ? ? ?public void print() { ?
? ? ? ? ? System.out.println("The print() in class DemoSuper."); ?
? ? ? ? ? super.print();// 調用父類的方法 ?
? ? ? ?} ? ? ? ?
? ? ? ?public static void main(String[] args) { ?
? ? ? ? ? DemoSuper ds = new DemoSuper(); ?
? ? ? ? ? ds.print(); ?
? ? ? ?} ?
? ?}

2 回復 有任何疑惑可以回復我~
#1

慕哥5139462 提問者

感謝指教
2018-02-07 回復 有任何疑惑可以回復我~

我現在明白了,super關鍵字就是為了調用父類的方法以及屬性

1 回復 有任何疑惑可以回復我~

那一節的視頻你可能沒有繼續往下看。

  1. 在子類構造方法中,super();是默認省略的,(super();的作用是繼承父類構造方法)。記?。耗J省略不是不存在,而是存在,不過被省略了。

  2. 因為super();存在,所以如果父類是有參構造方法,那問題就出現了,因為子類的構造過程中必須調用父類的構造方法,如果有參,那么不能省略。就要自己調用父類有參構造方法。

1 回復 有任何疑惑可以回復我~
#1

記川

就比如 對數函數,log的底數為10,如果為10 ,我們可寫可不寫,如果不為10,那么我們就要加上底數。
2018-02-04 回復 有任何疑惑可以回復我~
#2

慕哥5139462 提問者

感謝指教
2018-02-07 回復 有任何疑惑可以回復我~

為了調用父類的方法

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

構造方法中為什么加super();這個東西??

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號