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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

老師說,super()只是進行初始化的,那么求問super();在這里究竟起到了一個什么作用?

老師說,super()只是進行初始化的,那么求問super();在這里究竟起到了一個什么作用?

偶然的你 2022-04-14 10:11:55
package testCasting;public class Animal {String eyes;int age;public Animal(){}}class Dog extends Animal {String furcolor;public Dog(String eyes,int age,String furcolor){super();this.eyes=eyes;this.age=age;this.furcolor=furcolor;}public String toString(){return this.eyes+this.age+this.furcolor;}}class Cat extends Animal{String weight;public Cat(String eyes,int age,String weight){super();this.eyes=eyes;this.age=age;this.weight=weight;}public String toString(){return this.eyes+this.age+this.weight;}}網絡視頻說super()出現是因為要構建子類的一個對象,必須要先用super()構造一個父類的對象,而我們老師說,super()只是進行初始化的。那么super();在這里究竟起到了一個什么作用呢?
查看完整描述

3 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

給你舉個例子
class Father {
Father(){print ('father');};
}

class Son {
Son(){print ('son')};
}
如果只是這樣,那么構造Son之前會在后臺調用一下super()函數,
調用過程你看不到,但是確實執行了,結果是先father后son
但是這種時候你顯示的寫個super就沒有意義了,那么他在什么時候用呢,再舉個例子

給你舉個例子
class Father {
Father(){print ('father');};
Father(int age){print ('father is'+age);};
}

class Son {
Son(){super(36);print ('son')};
}
這種情況下輸出的就不是father 和 son了,而是father is 36 和 son
就是說在你父類不止一個構造函數時,顯示的調用super才有意義
進行初始化是一個方面,像我這個例子里就是輸出了一些信息



查看完整回答
反對 回復 2022-04-19
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

1)super(參數):調用基類中的某一個構造函數(應該為構造函數中的第一條語句)
2)this(參數):調用本類中另一種形成的構造函數(應該為構造函數中的第一條語句)
3)super: 它引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變量名 super.成員函數據名(實參)
4)this:它代表當前對象名(在程序中易產生二義性之處,應使用this來指明當前對象;如果函數的形參與類中的成員數據同名,這時需用this來指明成員變量名)

5)調用super()必須寫在子類構造方法的第一行,否則編譯不通過。每個子類構造方法的第一條語句,都是隱含地調用super(),如果父類沒有這種形式的構造函數,那么在編譯的時候就會報錯。
   6)super()和this()類似,區別是,super()從子類中調用父類的構造方法,this()在同一類內調用其它方法。
   7)super()和this()均需放在構造方法內第一行。
   8)盡管可以用this調用一個構造器,但卻不能調用兩個。
   9)this和super不能同時出現在一個構造函數里面,因為this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,所以在同一個構造函數里面有相同的語句,就失去了語句的意義,編譯器也不會通過。
   10)this()和super()都指的是對象,所以,均不可以在static環境中使用。包括:static變量,static方法,static語句塊。
   11)從本質上講,this是一個指向本對象的指針, 然而super是一個Java關鍵字。



查看完整回答
反對 回復 2022-04-19
?
DIEA

TA貢獻1820條經驗 獲得超3個贊

其實在java里,super關鍵字有主要的兩種用法:
1、用在子類的構造方法里,主要是調用父類的默認構造方法。
2、在子類里調用隱藏或重寫的屬性或行為。
要理解用法第一,涉及到java的對象的初始化,要明白第二用法,不難但要先有繼承多態的基礎,就很好理解了!

查看完整回答
反對 回復 2022-04-19
  • 3 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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