激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java Super 用法詳解及實例代碼

java Super 用法詳解及實例代碼

2020-08-28 10:07Java之家 Java教程

這篇文章主要介紹了java Super 用法詳解及實例代碼的相關資料,需要的朋友可以參考下

java  Super 用法詳解

 1)有人寫了個很好的初始化屬性的構造函數,而你僅僅想要在其中添加另一些自己新建屬性的初始化,這樣在一個構造函數中調用另外一個構造函數,可以避免重復的代碼量,減少工作量;

2)在一個構造函數中調用另外一個構造函數的時候應該用的是同一塊內存空間,在默認的構造函數中先初始化變量,調用另一個的時候覆寫已經初始化的變量的值;

3)整個調用的過程和遞歸調用函數有點類似,不斷充氣球,直到整個氣球膨脹起來,不斷的深層遞進,遇到停止標記,逐層的跳出來。

     寫了段代碼,解釋我上面的敘述:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class JavanTiger {
  int age;   // 年齡
  int hight;  // 身體高度
 
  public JavanTiger() {
    print();
    this.age=2//這里初始化 age 的值 ,但遞歸返回的時候,這個值會被覆寫
  }
  
  public JavanTiger(int age) {
    this();   // 調用自己的第一個構造函數,下面的兩個語句數不執行的
    this.age = age;
    print();
  }
 
  public JavanTiger(int age, int hight) {
    this(age);  // 調用自己第二個構造函數 ,下面的兩個語句數不執行的
    this.hight = hight;
    print();
  }
 
  public void print() { //打印函數
    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!

      個人理解就是這樣了,可能里面還有問題,比如構造函數遞歸調用和程序函數遞歸調用的機制是否似乎相同的?構造函數同對象一起產生,也就是同時會分配內存空間出來,那門這樣的遞歸調用會不會打亂分配內存的順序?希望看到的大牛們拍板,給個最好的解釋。

     今天要總結的是 super 這個關鍵字的使用,super 在構造函數中出現的時候一般是當前這個類繼承了其他的類,super 的出現就是為了調用父類的構造函數,貼段代碼先

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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();  // 調用父類無參數的構造函數
  }
  public static void main(String[] args) {
    new JavanTiger();
  }
}

    其實在類JavanTiger 中的構造函數中的 super()可以不寫,JAVA會默認調用父類的無參數的構造函數,但如果父類沒有定義無參數的構造函數,沒有語法錯誤,程序會自動退出,沒有任何打印語句,這時候你需要手動調用其他父類的構造函數,貼段代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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);  // 調用父類有參數的構造函數
  }
  public static void main(String[] args) {
    new JavanTiger();
  }
}

      這段代碼中的 super(1)必須要寫進去,否則編譯器會報錯。所以我簡單的總結了一下,“this()是調用自己其他的構造函數,super()是調用自己繼承的父類的構造函數“,如果只想調用默認無參數的父類構造函數,不用在子類的構造函數當中寫出來,但是實際編程的時候,總是會忽略這一點。

     那門這兩個關鍵字能不能同時出現在子類的一個構造函數當中納?答案肯定是不能。先說下自己的理解:

1)在新建一個基類的時候,不論遞歸調用幾次自身的構造函數,最終你都會去調用父類的構造函數,(不是顯式調用的話,系統會調用默認無參數的父類構造函數);

2)JAVA 中規定使用 this 和 super 時必須放在構造函數第一行,只有一個第一行;

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://www.cnblogs.com/java-class/archive/2012/12/20/2826499.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: av影片在线观看 | 成人视屏免费看 | 热@国产 | 国产成人网 | 国产一区二区三区影视 | chinesexxxx刘婷hd 黄色片网站在线免费观看 国产免费高清在线 | 国产一区二区三区撒尿在线 | av电影网站在线观看 | 91网址在线播放 | 久久久久女人精品毛片九一 | 一区二区三区日韩 | 国产亚洲精品成人a | 国产精品视频自拍 | 欧美日韩亚洲国产精品 | 黄网站色成年大片免费高 | 99精品视频在线免费观看 | 妇子乱av一区二区三区 | 一级大黄毛片免费观看 | 高清中文字幕在线 | 草莓福利视频在线观看 | 久久国产精品电影 | 毛片大全 | 久草在线资源观看 | 国产精品一区免费在线观看 | 成人激情在线观看 | 黄色大片在线观看 | 午夜视频在线观看91 | 一级性色 | 在线成人免费视频 | 第四色成人网 | 性片久久 | 国产视频在线一区 | 久久96国产精品久久秘臀 | 久章草影院| 黄色网址在线播放 | 中文字幕在线第二页 | 久久国产一二区 | 国产免费成人 | 97视频| 一级黄色大片在线观看 | 毛片在线视频观看 |