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