亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java基礎教程之構造器與方法重載

2019-11-26 15:26:41
字體:
來源:轉載
供稿:網友

在方法與數據成員中,我們提到,Java中的對象在創建的時候會初始化(initialization)。初始化時,對象的數據成員被賦予初始值。我們可以顯式初始化。如果我們沒有給數據成員賦予初始值,數據成員會根據其類型采用默認初始值。

顯式初始化要求我們在寫程序時就確定初始值,這有時很不方便。我們可以使用構造器(constructor)來初始化對象。構造器可以初始化數據成員,還可以規定特定的操作。這些操作會在創建對象時自動執行。

定義構造器

構造器是一個方法。像普通方法一樣,我們在類中定義構造器。構造器有如下基本特征:

1.構造器的名字和類的名字相同
2.構造器沒有返回值
 
我們定義Human類的構造器:

public class Test{  public static void main(String[] args)  {    Human aPerson = new Human(160);    System.out.println(aPerson.getHeight());  }}class Human{  /**   * constructor   */  Human(int h)  {    this.height = h;    System.out.println("I'm born");  }  /**   * accessor   */  int getHeight()  {    return this.height;  }  int height;}

上面的程序會打印

復制代碼 代碼如下:

I'm born
160

構造器可以像普通方法一樣接收參數列表。這里,構造器Human()接收一個整數作為參數。在方法的主體中,我們將該整數參數賦予給數據成員height。構造器在對象創建時做了兩件事:

構造器可以像普通方法一樣接收參數列表。這里,構造器Human()接收一個整數作為參數。在方法的主體中,我們將該整數參數賦予給數據成員height。構造器在對象創建時做了兩件事:

1.為數據成員提供初始值 this.height = h;
2.執行特定的初始操作 System.out.println("I'm born");

這樣,我們就可以在調用構造器時,靈活的設定初始值,不用像顯示初始化那樣拘束。

構造器是如何被調用的呢?我們在創建類的時候,采用的都是new Human()的方式。實際上,我們就是在調用Human類的構造器。當我們沒有定義該方法時,Java會提供一個空白的構造器,以便使用new的時候調用。但當我們定義了構造器時,在創建對象時,Java會調用定義了的構造器。在調用時,我們提供了一個參數160。從最后的運行結果中也可以看到,對象的height確實被初始化為160。

初始化方法的優先級

方法與數據成員中,我們可以看到,如果我們提供顯式初始值,那么數據成員就會采用顯式初始值,而不是默認初始值。但如果我們既提供顯式初始值,又在構造器初始化同一數據成員,最終的初始值將由構造器決定。比如下面的例子:

public class Test{  public static void main(String[] args)  {    Human aPerson = new Human(160);    System.out.println(aPerson.getHeight());  }}class Human{  /**   * constructor   */  Human(int h)  {    this.height = h;   }  /**   * accessor   */  int getHeight()  {    return this.height;  }  int height=170; // explicit initialization}

運行結果為:

復制代碼 代碼如下:

160

對象最終的初始化值與構建方法中的值一致。因此:

構建方法 > 顯式初始值 > 默認初始值

(事實上,所謂的優先級與初始化時的執行順序有關,我將在以后深入這一點)

方法重載

一個類中可以定義不止一個構造器,比如:

public class Test{  public static void main(String[] args)  {    Human neZha  = new Human(150, "shit");    System.out.println(neZha.getHeight());   }}class Human{  /**   * constructor 1   */  Human(int h)  {    this.height = h;    System.out.println("I'm born");  }  /**   * constructor 2   */  Human(int h, String s)  {    this.height = h;    System.out.println("Ne Zha: I'm born, " + s);  }  /**   * accessor   */  int getHeight()  {    return this.height;  }  int height;}

運行結果:

復制代碼 代碼如下:

Ne Zha: I'm born, shit
150

上面定義了兩個構造器,名字都是Human。兩個構造器有不同的參數列表。

在使用new創建對象時,Java會根據提供的參數來決定構建哪一個構造器。比如在構建neZha時,我們提供了兩個參數: 整數150和字符串"shit",這對應第二個構建方法的參數列表,所以Java會調用第二個構建方法。

在Java中,Java會同時根據方法名和參數列表來決定所要調用的方法,這叫做方法重載(method overloading)。構建方法可以進行重載,普通方法也可以重載,比如下面的breath()方法:

public class Test{  public static void main(String[] args)  {    Human aPerson = new Human();    aPerson.breath(10);  }}class Human{  /**    * breath() 1    */  void breath()  {    System.out.println("hu...hu...");  }  /**  * breath() 2  */  void breath(int rep)  {    int i;    for(i = 0; i < rep; i++) {      System.out.println("lu...lu...");    }  }  int height;}

運行結果:

復制代碼 代碼如下:

lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...
lu...lu...

 
可以看到,由于在調用的時候提供了一個參數: 整數10,所以調用的是參數列表與之相符的第二個breath()方法。

總結

constructor特征: 與類同名,無返回值
constructor目的: 初始化,初始操作
方法重載: 方法名 + 參數列表 -> 實際調用哪一個方法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.国产一区| 欧洲日本亚洲国产区| 91久久精品一区| 国产成人福利视频| 亚洲影视九九影院在线观看| 亚洲激情国产精品| 久久精品99久久久久久久久| 久久久精品欧美| 最近的2019中文字幕免费一页| 国产精品美女久久久久久免费| 久久久噜噜噜久久| 国产91ⅴ在线精品免费观看| 久久久精品国产一区二区| 在线不卡国产精品| 国产亚洲精品综合一区91| 岛国av午夜精品| 51ⅴ精品国产91久久久久久| 一本色道久久88精品综合| 国产精品私拍pans大尺度在线| 国产精品免费一区豆花| 中文字幕成人在线| 亚洲福利小视频| 国产精品久久二区| 日韩欧美999| 青青久久av北条麻妃黑人| 久久久精品久久久久| 日韩欧美在线视频日韩欧美在线视频| 国产美女精品视频免费观看| 午夜精品久久久久久久男人的天堂| 美女少妇精品视频| 亚洲电影天堂av| 亚洲成人黄色在线| 欧美专区日韩视频| 国产精品av在线播放| 国产精品久久久久久久久久三级| 久久免费国产视频| 在线国产精品播放| 久久在线观看视频| 97视频在线观看视频免费视频| 欧美性xxxx极品hd欧美风情| 久久中文字幕视频| 91精品国产综合久久香蕉| 麻豆乱码国产一区二区三区| 欧美亚洲成人网| 精品精品国产国产自在线| 色妞色视频一区二区三区四区| 亚洲va欧美va在线观看| 久久久久久久久久亚洲| 久久精视频免费在线久久完整在线看| 成人免费淫片视频软件| 亚洲精品久久久久久久久久久| 久久这里只有精品视频首页| 亚洲国产精品yw在线观看| 亚洲欧洲日产国产网站| 欧美在线视频观看| 尤物yw午夜国产精品视频| 国产精品一区二区女厕厕| 亚洲国产精品999| 亚洲欧美国产日韩中文字幕| 亚洲一区二区国产| 欧美日韩一区二区在线| 日韩在线观看免费| 精品偷拍一区二区三区在线看| 97av在线播放| 日韩电影免费在线观看| 国产精欧美一区二区三区| 91九色单男在线观看| 69av视频在线播放| 亚洲人成电影网站色www| 自拍偷拍免费精品| 国产主播精品在线| 亚洲欧洲在线免费| 亚洲综合在线播放| 成人女保姆的销魂服务| 精品国偷自产在线视频99| 法国裸体一区二区| 成人在线播放av| 久久久久久久一| 亚洲日本欧美中文幕| 国产精品视频99| 亚洲伦理中文字幕| 亚洲影院色在线观看免费| 久久久久久一区二区三区| 亚洲第一精品久久忘忧草社区| 国产成人综合精品| 欧美精品情趣视频| 日韩免费电影在线观看| 国产精品久久久久久久久久三级| 精品久久国产精品| 亚洲欧美一区二区三区情侣bbw| 亚洲乱码一区av黑人高潮| 国产日产亚洲精品| 激情久久av一区av二区av三区| 精品国产1区2区| 51久久精品夜色国产麻豆| 国产精品久久不能| 91黑丝高跟在线| 久久99国产综合精品女同| 91av在线播放| 不卡av在线播放| 亚洲性生活视频在线观看| 欧美裸体xxxx极品少妇软件| 国产日韩精品在线观看| 日韩欧美成人免费视频| 疯狂做受xxxx高潮欧美日本| 国产精品视频一区二区三区四| 亚洲人成在线观看网站高清| 国产精品免费观看在线| 国产精品久久国产精品99gif| 97人人模人人爽人人喊中文字| 日韩欧中文字幕| 日韩免费观看在线观看| 日本伊人精品一区二区三区介绍| 国产午夜精品美女视频明星a级| 琪琪亚洲精品午夜在线| 欧美超级乱淫片喷水| 日韩av片免费在线观看| 国产成人亚洲综合青青| 91系列在线观看| 久久精品99国产精品酒店日本| 在线电影中文日韩| 欧美www视频在线观看| 国产z一区二区三区| 中文字幕精品国产| 亚洲女人被黑人巨大进入al| 午夜精品国产精品大乳美女| 欧美性猛交xxxx黑人| 精品久久中文字幕久久av| 91精品国产综合久久香蕉| 日韩免费观看高清| 午夜精品美女自拍福到在线| 欧美日本国产在线| 日韩精品在线免费| 精品国产欧美一区二区五十路| 欧美www视频在线观看| 中文字幕在线看视频国产欧美在线看完整| 欧洲亚洲女同hd| 欧美日韩一区二区在线播放| 日韩资源在线观看| 国产女人18毛片水18精品| 日韩精品免费在线播放| 国产精品成人免费电影| 久久国产精品免费视频| www.欧美视频| 成人免费xxxxx在线观看| 国产一区深夜福利| 亚洲欧美另类自拍| 国产综合久久久久| 亚洲欧美日韩国产精品| 久久精品国产69国产精品亚洲| 欧美激情视频网站| 欧美做爰性生交视频| 国产精品手机播放| 91精品国产高清自在线看超| 日韩精品欧美激情| 欧美综合一区第一页| 日韩久久精品成人| 欧美国产精品日韩| 欧美日韩国产激情| 久久精品国产91精品亚洲| 久久久久久久久久久免费| 亚洲新声在线观看| 色在人av网站天堂精品| 日韩欧美亚洲范冰冰与中字|