Java中this与super的区别
2019獨角獸企業重金招聘Python工程師標準>>>
this與super關鍵字在java中構造函數中的應用:?
**
super()函數
**?
super()函數在子類構造函數中調用父類的構造函數時使用,而且必須要在構造函數的第一行,例如:
執行這段代碼的結果為:
An Animal?
A Dog
定義子類的一個對象時,會先調用子類的構造函數,然后在調用父類的構造函數,如果父類函數足夠多的話,會一直調用到最終的父類構造函數,函數調用時會使用棧空間,所以按照入棧的順序,最先進入的是子類的構造函數,然后才是鄰近的父類構造函數,最后再棧頂的是最終的父類構造函數,構造函數執行是則按照從棧頂到棧底的順序依次執行,所以本例中的執行結果是先執行Animal的構造函數,然后再執行子類的構造函數。
class Animal {private String name;public String getName(){name = name;}public Animal(String name) {this.name = name;} } class Dog extends Animal {public Dog() {super(name);} } class Test{public static void main(String [] args){Dog dog = new Dog("jack");System.out.println(dog.getName());} }運行結果:
jack
當父類構造函數有參數時,如果要獲取父類的private的成員變量并給其賦值作為子類的結果,此時在定義子類的構造函數時就需要調用父類的構造函數,并傳值,如上例所示。
this()函數
this()函數主要應用于同一類中從某個構造函數調用另一個重載版的構造函數。this()只能用在構造函數中,并且也只能在第一行。所以在同一個構造函數中this()和super()不能同時出現。?
例如下面的這個例子:
`所以綜上所述,super()與this()的區別主要有以下:?
不同點:?
1、super()主要是對父類構造函數的調用,this()是對重載構造函數的調用?
2、super()主要是在繼承了父類的子類的構造函數中使用,是在不同類中的使用;this()主要是在同一類的不同構造函數中的使用?
相同點:?
1、super()和this()都必須在構造函數的第一行進行調用,否則就是錯誤的
轉載于:https://my.oschina.net/architectliuyuanyuan/blog/1615650
總結
以上是生活随笔為你收集整理的Java中this与super的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue根据菜单json数据动态按需加载路
- 下一篇: 作为Java程序员应该掌握的10项技能