java super实例_java Super 用法详解及实例代码
java Super 用法詳解及實(shí)例代碼
發(fā)布于 2021-1-8|
復(fù)制鏈接
摘記: java? Super 用法詳解?1)有人寫(xiě)了個(gè)很好的初始化屬性的構(gòu)造函數(shù),而你僅僅想要在其中添加另一些自己新建屬性的初始化,這樣在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù),可以避免重復(fù)的代碼量,減少工作量;2)在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù)的時(shí)候應(yīng)該用的是同一塊內(nèi)存空間,在默認(rèn)的構(gòu)造函數(shù)中 ..
java? Super 用法詳解?1)有人寫(xiě)了個(gè)很好的初始化屬性的構(gòu)造函數(shù),而你僅僅想要在其中添加另一些自己新建屬性的初始化,這樣在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù),可以避免重復(fù)的代碼量,減少工作量;2)在一個(gè)構(gòu)造函數(shù)中調(diào)用另外一個(gè)構(gòu)造函數(shù)的時(shí)候應(yīng)該用的是同一塊內(nèi)存空間,在默認(rèn)的構(gòu)造函數(shù)中先初始化變量,調(diào)用另一個(gè)的時(shí)候覆寫(xiě)已經(jīng)初始化的變量的值;3)整個(gè)調(diào)用的過(guò)程和遞歸調(diào)用函數(shù)有點(diǎn)類似,不斷充氣球,直到整個(gè)氣球膨脹起來(lái),不斷的深層遞進(jìn),遇到停止標(biāo)記,逐層的跳出來(lái)。???? 寫(xiě)了段代碼,解釋我上面的敘述:
```java
class JavanTiger {
int age; // 年齡
int hight; // 身體高度
public JavanTiger() {
print();
this.age=2; //這里初始化 age 的值 ,但遞歸返回的時(shí)候,這個(gè)值會(huì)被覆寫(xiě)
}
public JavanTiger(int age) {
this(); // 調(diào)用自己的第一個(gè)構(gòu)造函數(shù),下面的兩個(gè)語(yǔ)句數(shù)不執(zhí)行的
this.age = age;
print();
}
public JavanTiger(int age, int hight) {
this(age); // 調(diào)用自己第二個(gè)構(gòu)造函數(shù) ,下面的兩個(gè)語(yǔ)句數(shù)不執(zhí)行的
this.hight = hight;
print();
}
public void print() { //打印函數(shù)
System.out.println("I'am a " + age + "歲 " + hight + "尺高 tiger!");
}
public static void main(String[] args) {
new JavanTiger(3,3);
}
}
//output
//I'am a 0歲 0尺高 tiger!
//I'am a 3歲 0尺高 tiger!
//I'am a 3歲 3尺高 tiger!
```
個(gè)人理解就是這樣了,可能里面還有問(wèn)題,比如構(gòu)造函數(shù)遞歸調(diào)用和程序函數(shù)遞歸調(diào)用的機(jī)制是否似乎相同的?構(gòu)造函數(shù)同對(duì)象一起產(chǎn)生,也就是同時(shí)會(huì)分配內(nèi)存空間出來(lái),那門這樣的遞歸調(diào)用會(huì)不會(huì)打亂分配內(nèi)存的順序?希望看到的大牛們拍板,給個(gè)最好的解釋。???? 今天要總結(jié)的是 super 這個(gè)關(guān)鍵字的使用,super 在構(gòu)造函數(shù)中出現(xiàn)的時(shí)候一般是當(dāng)前這個(gè)類繼承了其他的類,super 的出現(xiàn)就是為了調(diào)用父類的構(gòu)造函數(shù),貼段代碼先
```java
class Tiger {
int age; // 年齡
int hight; // 身體高度
public Tiger() {
print();
}
public void print() {
System.out.println("I'am a " + age + "歲 " + hight + "尺高 tiger!");
}
}
public class JavanTiger extends Tiger {
public JavanTiger() {
super(); // 調(diào)用父類無(wú)參數(shù)的構(gòu)造函數(shù)
}
public static void main(String[] args) {
new JavanTiger();
}
}
```
其實(shí)在類JavanTiger 中的構(gòu)造函數(shù)中的 super()可以不寫(xiě),JAVA會(huì)默認(rèn)調(diào)用父類的無(wú)參數(shù)的構(gòu)造函數(shù),但如果父類沒(méi)有定義無(wú)參數(shù)的構(gòu)造函數(shù),沒(méi)有語(yǔ)法錯(cuò)誤,程序會(huì)自動(dòng)退出,沒(méi)有任何打印語(yǔ)句,這時(shí)候你需要手動(dòng)調(diào)用其他父類的構(gòu)造函數(shù),貼段代碼:
```java
class Tiger {
int age; // 年齡
int hight; // 身體高度
public Tiger(int age) {
this.age = age;
print();
}
public void print() {
System.out.println("I'am a " + age + "歲 " + hight + "尺高 tiger!");
}
}
public class JavanTiger extends Tiger {
public JavanTiger() {
super(1); // 調(diào)用父類有參數(shù)的構(gòu)造函數(shù)
}
public static void main(String[] args) {
new JavanTiger();
}
}
```
總結(jié)
以上是生活随笔為你收集整理的java super实例_java Super 用法详解及实例代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java 压缩多个文件_java实现一次
- 下一篇: java中io流案例_Java IO流的