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

首頁 > 編程 > Java > 正文

Java基礎----構造器與方法重載

2019-11-06 06:52:23
字體:
來源:轉載
供稿:網友

學習java的同學注意了!?。?nbsp;學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:523047986  我們一起學Java!

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

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

 

定義構造器

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

構造器的名字和類的名字相同構造器沒有返回值

 

我們定義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 born160

 

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

為數據成員提供初始值 this.height = h;執行特定的初始操作 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, shit150

 

上面定義了兩個構造器,名字都是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目的: 初始化,初始操作

方法重載: 方法名 + 參數列表 -> 實際調用哪一個方法

學習Java的同學注意了?。?! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:523047986  我們一起學Java!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美日韩一区二区| 欧美色视频日本版| 欧美日韩国产成人在线观看| 亚洲精品美女网站| 国产精品久久久久久久久久尿| 欧美日韩免费观看中文| 91高清免费视频| 欧美黑人极品猛少妇色xxxxx| 国产激情999| 欧美大全免费观看电视剧大泉洋| 国产精品久久电影观看| 日韩麻豆第一页| 91成人在线观看国产| 欧美与黑人午夜性猛交久久久| 亚洲男人天堂网| 91九色国产在线| 午夜精品久久久久久久99热| 97av在线视频| 日韩**中文字幕毛片| 91精品久久久久久久久| 日韩精品中文字| 午夜精品久久久99热福利| 欧美亚洲国产另类| 欧美日韩国产一区在线| 国产女同一区二区| 一二美女精品欧洲| 国产激情久久久| 992tv在线成人免费观看| 91精品国产91久久久久久不卡| 日韩在线精品一区| 欧美性理论片在线观看片免费| 亚洲图片在区色| 国产视频精品免费播放| 日韩精品中文字幕久久臀| 国产中文字幕亚洲| 亚洲xxxx3d| 91精品国产沙发| 亚洲国产精品专区久久| 久久免费福利视频| 91久久久久久| 国产精品无码专区在线观看| www欧美xxxx| 国产成人一区二区三区电影| 欧美床上激情在线观看| 91精品国产综合久久久久久久久| 国产精品一区二区女厕厕| 超薄丝袜一区二区| 久久99久国产精品黄毛片入口| 欧美在线视频免费播放| 国产欧美久久一区二区| 久久亚洲精品小早川怜子66| 中文字幕日韩精品在线| 亚洲视频在线视频| 亚洲精品第一国产综合精品| 亚洲国模精品私拍| 日韩电影中文字幕在线| 色多多国产成人永久免费网站| 亚洲综合在线中文字幕| 中文字幕国内精品| 97国产精品免费视频| 亚洲自拍偷拍在线| 亚洲va国产va天堂va久久| 国产日韩换脸av一区在线观看| 精品亚洲国产成av人片传媒| 川上优av一区二区线观看| 久久久久久12| 亚洲精品电影网站| 国产视频观看一区| 欧美色视频日本高清在线观看| 久久久人成影片一区二区三区| 57pao精品| 日韩视频在线一区| 国产成人精品综合久久久| 国产成人精品免费视频| 日本精品中文字幕| 色哟哟入口国产精品| 日韩久久精品成人| 欧美色道久久88综合亚洲精品| 国产精品一久久香蕉国产线看观看| 日韩少妇与小伙激情| 国产福利视频一区| 亚洲欧美国产另类| 国产精品久久久久久久久久免费| 亚洲欧美第一页| 日韩av手机在线看| 欧美精品一区二区三区国产精品| 国产精品白嫩初高中害羞小美女| 欧美性xxxx18| 91社区国产高清| 亚洲欧美日韩网| 日韩美女福利视频| 亚洲欧洲一区二区三区在线观看| 久久精品一区中文字幕| 欧美激情视频一区二区三区不卡| 欧美一级视频一区二区| 日韩视频在线免费观看| 欧美特黄级在线| 欧美xxxx综合视频| 国产午夜精品全部视频播放| 国产精品久久激情| 精品magnet| 国产又爽又黄的激情精品视频| 亚洲999一在线观看www| 国外视频精品毛片| 91精品国产高清久久久久久91| 一区二区三区视频免费在线观看| 亚洲电影在线看| 91精品视频免费看| 久久久久久久久久久亚洲| 亚洲综合日韩在线| 热久久视久久精品18亚洲精品| 91免费国产视频| 亚洲qvod图片区电影| 亚洲精品乱码久久久久久按摩观| 成人啪啪免费看| 成人激情av在线| 久久资源免费视频| 国产成人久久久| 久久久www成人免费精品张筱雨| 亚洲精品在线91| 日韩中文字幕免费| 欧美猛交ⅹxxx乱大交视频| 96sao精品视频在线观看| 欧美日韩在线视频首页| 66m—66摸成人免费视频| 国产成人一区二区| 91九色单男在线观看| 国产精品你懂得| 97国产一区二区精品久久呦| 国产亚洲精品一区二区| 国内精品久久影院| 黄色成人在线免费| 亚洲欧美国产精品| 国产精品第二页| 尤物九九久久国产精品的特点| 久久免费视频网| 国产欧美va欧美va香蕉在| 国产精品久久久亚洲| 亚洲淫片在线视频| 久久精品电影一区二区| 中文字幕亚洲综合| 疯狂欧美牲乱大交777| 久久影院资源站| 亚洲精品v欧美精品v日韩精品| 日韩精品视频在线| 国产精品吹潮在线观看| 九九视频直播综合网| 国产精品av在线| 岛国av一区二区三区| 久久精品夜夜夜夜夜久久| 91国产精品电影| 92国产精品视频| 美女av一区二区三区| 亚洲一区第一页| 成人性生交大片免费看小说| 亚洲在线观看视频| 欧美wwwwww| 国产美女精品视频免费观看| 91tv亚洲精品香蕉国产一区7ujn| 7777免费精品视频| 九九久久综合网站| 亚洲无限av看| 日韩精品高清在线观看| 亚洲精品欧美日韩专区|