構(gòu)造方法中為什么加super();這個(gè)東西??
虛心求教老師;構(gòu)造方法中為什么加super();這個(gè)東西??默認(rèn)生成的構(gòu)造方法都會有這個(gè),為什莫是這個(gè)super()具體做什莫,感覺寫了也和沒寫一樣
虛心求教老師;構(gòu)造方法中為什么加super();這個(gè)東西??默認(rèn)生成的構(gòu)造方法都會有這個(gè),為什莫是這個(gè)super()具體做什莫,感覺寫了也和沒寫一樣
2018-02-03
舉報(bào)
2018-02-03
要講super就不能不提t(yī)his,下面從4個(gè)角度講解一下super(需要對比的時(shí)候拿this對比一下,加深理解)
1. super關(guān)鍵字表示超(父)類的意思。this變量代表對象本身。
2. super訪問父類被子類隱藏的變量或覆蓋的方法。當(dāng)前類如果是從超類繼承而來的,當(dāng)調(diào)用super.XX()就是調(diào)用基類版本的XX()方法。其中超類是最近的父類。
3.調(diào)用super() 父類構(gòu)造函數(shù)的時(shí)候只能調(diào)用在子類構(gòu)造函數(shù)的第一行
4.this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對不能出現(xiàn)this。并且this只和特定的對象關(guān)聯(lián),而不和類關(guān)聯(lián),同一個(gè)類的不同對象有不同的this
例如:
? ?class Person { ?
? ? ? ?protected void print() { ?
? ? ? ? ? System.out.println("The print() in class Person."); ?
? ? ? ?} ?
? ?} ? ? ? ?
? ?public class DemoSuper extends Person { ? ? ? ?
? ? ? ?public DemoSuper(){ ? ? ? ?
? ? ? ? ? super(); //調(diào)用父類的構(gòu)造方法,而且放第一行,如果不寫,系統(tǒng)自動加 ?
? ? ? ?} ?
? ? ? ?public void print() { ?
? ? ? ? ? System.out.println("The print() in class DemoSuper."); ?
? ? ? ? ? super.print();// 調(diào)用父類的方法 ?
? ? ? ?} ? ? ? ?
? ? ? ?public static void main(String[] args) { ?
? ? ? ? ? DemoSuper ds = new DemoSuper(); ?
? ? ? ? ? ds.print(); ?
? ? ? ?} ?
? ?}
2018-04-20
我現(xiàn)在明白了,super關(guān)鍵字就是為了調(diào)用父類的方法以及屬性
2018-02-04
那一節(jié)的視頻你可能沒有繼續(xù)往下看。
在子類構(gòu)造方法中,super();是默認(rèn)省略的,(super();的作用是繼承父類構(gòu)造方法)。記?。耗J(rèn)省略不是不存在,而是存在,不過被省略了。
因?yàn)閟uper();存在,所以如果父類是有參構(gòu)造方法,那問題就出現(xiàn)了,因?yàn)樽宇惖臉?gòu)造過程中必須調(diào)用父類的構(gòu)造方法,如果有參,那么不能省略。就要自己調(diào)用父類有參構(gòu)造方法。
2018-02-03
為了調(diào)用父類的方法