課程
/后端開發(fā)
/Java
/Java入門第二季 升級版
虛心求教老師;構造方法中為什么加super();這個東西??默認生成的構造方法都會有這個,為什莫是這個super()具體做什莫,感覺寫了也和沒寫一樣
2018-02-03
源自:Java入門第二季 升級版 8-6
正在回答
要講super就不能不提t(yī)his,下面從4個角度講解一下super(需要對比的時候拿this對比一下,加深理解)1. super關鍵字表示超(父)類的意思。this變量代表對象本身。2. super訪問父類被子類隱藏的變量或覆蓋的方法。當前類如果是從超類繼承而來的,當調用super.XX()就是調用基類版本的XX()方法。其中超類是最近的父類。3.調用super() 父類構造函數(shù)的時候只能調用在子類構造函數(shù)的第一行4.this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對不能出現(xiàn)this。并且this只和特定的對象關聯(lián),而不和類關聯(lián),同一個類的不同對象有不同的this例如: ? ?class Person { ? ? ? ? ?protected void print() { ? ? ? ? ? ? System.out.println("The print() in class Person."); ? ? ? ? ?} ? ? ?} ? ? ? ? ? ?public class DemoSuper extends Person { ? ? ? ? ? ? ? ?public DemoSuper(){ ? ? ? ? ? ? ? ? ? super(); //調用父類的構造方法,而且放第一行,如果不寫,系統(tǒng)自動加 ? ? ? ? ?} ? ? ? ? ?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(); ? ? ? ? ?} ? ? ?}
慕哥5139462 提問者
我現(xiàn)在明白了,super關鍵字就是為了調用父類的方法以及屬性
那一節(jié)的視頻你可能沒有繼續(xù)往下看。
在子類構造方法中,super();是默認省略的,(super();的作用是繼承父類構造方法)。記?。耗J省略不是不存在,而是存在,不過被省略了。
因為super();存在,所以如果父類是有參構造方法,那問題就出現(xiàn)了,因為子類的構造過程中必須調用父類的構造方法,如果有參,那么不能省略。就要自己調用父類有參構造方法。
記川
為了調用父類的方法
舉報
課程升級!以終為始告別枯燥,在開發(fā)和重構中體會Java面向對象編程的奧妙
1 回答子類構造方法中super();
1 回答關于super和構造方法
2 回答super中怎么調用父類的有參構造方法?
2 回答這個構造方法為什么要放在這里?構造方法還可以干嘛?
3 回答什么構造方法
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2018-02-03
要講super就不能不提t(yī)his,下面從4個角度講解一下super(需要對比的時候拿this對比一下,加深理解)
1. super關鍵字表示超(父)類的意思。this變量代表對象本身。
2. super訪問父類被子類隱藏的變量或覆蓋的方法。當前類如果是從超類繼承而來的,當調用super.XX()就是調用基類版本的XX()方法。其中超類是最近的父類。
3.調用super() 父類構造函數(shù)的時候只能調用在子類構造函數(shù)的第一行
4.this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對不能出現(xiàn)this。并且this只和特定的對象關聯(lián),而不和類關聯(lián),同一個類的不同對象有不同的this
例如:
? ?class Person { ?
? ? ? ?protected void print() { ?
? ? ? ? ? System.out.println("The print() in class Person."); ?
? ? ? ?} ?
? ?} ? ? ? ?
? ?public class DemoSuper extends Person { ? ? ? ?
? ? ? ?public DemoSuper(){ ? ? ? ?
? ? ? ? ? super(); //調用父類的構造方法,而且放第一行,如果不寫,系統(tǒng)自動加 ?
? ? ? ?} ?
? ? ? ?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(); ?
? ? ? ?} ?
? ?}
2018-04-20
我現(xiàn)在明白了,super關鍵字就是為了調用父類的方法以及屬性
2018-02-04
那一節(jié)的視頻你可能沒有繼續(xù)往下看。
在子類構造方法中,super();是默認省略的,(super();的作用是繼承父類構造方法)。記?。耗J省略不是不存在,而是存在,不過被省略了。
因為super();存在,所以如果父類是有參構造方法,那問題就出現(xiàn)了,因為子類的構造過程中必須調用父類的構造方法,如果有參,那么不能省略。就要自己調用父類有參構造方法。
2018-02-03
為了調用父類的方法