亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中的構(gòu)造方法和方法重載完整代碼

 更新時間:2024年10月15日 09:55:24   作者:三水氣象臺  
在Java編程中,構(gòu)造方法用于初始化對象,而方法重載允許同一個類中存在多個同名方法但參數(shù)不同,文中通過代碼及圖文介紹的非常詳細,需要的朋友可以參考下

一、構(gòu)造方法

1.從方法到構(gòu)造方法

今天我們來講講什么是構(gòu)造方法,不同于千篇一律一上來就給出定義(形如...的是構(gòu)造方法),先進行一些回顧,從我們更為熟悉的“方法”下手。

那么,什么是方法?

這應(yīng)該是學習Java第一節(jié)課入門時就已經(jīng)了解了的一個名詞。方法是一種函數(shù),也是一個代碼片段,用于執(zhí)行特定的任務(wù)或操作,或者可以說是一段封裝了特定功能或任務(wù)的可重用代碼塊。

方法有哪些種類呢?

除了我們經(jīng)常接觸的實例方法(也稱成員方法),比較陌生的靜態(tài)方法,還有就是我們今天要講的構(gòu)造方法了。抽象方法目前用到的比較少,暫且不做提及。

其實,構(gòu)造方法與實例方法大有不同,下面我們就來看看到底什么是構(gòu)造方法。

2.什么是構(gòu)造方法

1)構(gòu)造方法的定義

長成如下這種樣子的我們就叫做構(gòu)造方法:

→ 無返回值(含void)、方法名與類名相同,在創(chuàng)建對象時由編譯器自動調(diào)用

public class( ){ 

}

在每個類中都自帶構(gòu)造方法,但該構(gòu)造方法無參數(shù)及方法內(nèi)容。我們也可以自己在類中創(chuàng)建構(gòu)造方法。每個類都有至少一個構(gòu)造方法,如果沒有明確定義,Java會提供一個默認的無參構(gòu)造方法。

證明如下:創(chuàng)建一個名為空的類和一個主函數(shù)后,在out里我們尋找相對應(yīng)的文件名打開。

會得到如下的結(jié)果

2)構(gòu)造方法的作用

構(gòu)造方法是一種特殊的方法,它的作用是在創(chuàng)建對象時初始化對象的狀態(tài)。

通過構(gòu)造方法,我們可以在創(chuàng)建對象時為對象的屬性賦初值。

使用構(gòu)造方法時可以將賦值的代碼寫好,在之后主函數(shù)入口創(chuàng)建對象時就不需要使用對象變量名一個一個賦值了,可以直接按照在構(gòu)造方法中“打包”的格式在主函數(shù)中直接創(chuàng)建對象后傳入值(可以在下面的代碼實例中具體理解)。

——總結(jié)一下就是構(gòu)造方法通常用于初始化和代碼復(fù)用。

3.構(gòu)造方法的代碼實例

1) 系統(tǒng)默認的無參構(gòu)造方法

雖然代碼中沒有明確定義構(gòu)造方法,但默認構(gòu)造方法確實存在并被調(diào)用。

在主函數(shù)中Data實例化對象時,會調(diào)用默認構(gòu)造方法來初始化對象。

public class Data {
    private int age;
    private String name;
    private boolean gender;
    
    public void printInfo(){
        System.out.println("age"+age+"name"+name+"gender"+gender);
    }

    public static void main(String[] args){
        Data data = new Data();
        data.printInfo();
    }
    
}

輸出結(jié)果:0+null+false

2) 在1.0的基礎(chǔ)上為成員屬性進行賦值

public class Data {
    private int age=1;
    private String name="abc";
    private boolean gender=true;

    public void printInfo(){
        System.out.println("age:————"+age+"   name:————"+name+"   gender:————"+gender);
    }

    public static void main(String[] args){
        Data data = new Data();
        data.printInfo();
    }
}

輸出結(jié)果:age:————1   name:————abc   gender:————true

3) 定義一個帶有參數(shù)的構(gòu)造方法

在主方法中,實例化Data對象時調(diào)用了新定義的帶參數(shù)的構(gòu)造方法,傳入具體的參數(shù)值來初始化對象。

public class Data {

    private int age;
    private String name;
    private boolean gender;

    public Data(int age,String name,boolean gender){
        this.age=age;
        this.name=name;
        this.gender=gender;
        System.out.println("調(diào)用一次構(gòu)造方法");

    }

    public void printInfo(){
        System.out.println("age:————"+age+"   name:————"+name+"   gender:————"+gender);
    }

    public static void main(String[] args){
        Data data = new Data(1,"abc",true);
        data.printInfo();
    }

}

輸出結(jié)果:age:————1   name:————abc   gender:————true

看到這里,我們不妨思考一下,從1.0過渡到3.0中,究竟有哪些差異,或者說是我們定義的構(gòu)造函數(shù)體現(xiàn)了什么樣的作用。

1.0是我提供的一個最基本的代碼,2.0在此基礎(chǔ)上對私有變量進行了賦值,3.0雖然與2.0是同樣的輸出結(jié)果,但多出了一塊構(gòu)造方法,以及在創(chuàng)建(實例化)對象時也是略有差異。

4.分析代碼與總結(jié)

1)this關(guān)鍵字的一些作用

作用區(qū)分局部變量和實例變量

當方法的參數(shù)或局部變量與實例變量同名時,使用 this 可以明確指示要操作的是實例變量。
例如,this.year = year; 可以將構(gòu)造方法的參數(shù)值賦給當前對象的實例變量。

在構(gòu)造方法中調(diào)用其他構(gòu)造方法在構(gòu)造方法中使用 this(...) 可以調(diào)用同一個類中的其他構(gòu)造方法。這樣可以避免重復(fù)代碼,并實現(xiàn)代碼的復(fù)用。
例如,this(year, month, day) 可以在構(gòu)造方法中調(diào)用另一個構(gòu)造方法來初始化對象。

this.實例變量=構(gòu)造方法中的參數(shù)值;

參數(shù)變量可以接收外部傳入的數(shù)值,將值賦給當前類的實例變量,從而初始化對象的狀態(tài)。

2)構(gòu)造方法和一般方法的區(qū)別

從上述給出的代碼不難看出,一般方法都需要我們在主函數(shù)中先創(chuàng)建對象然后利用對象調(diào)用方法,構(gòu)造方法則不需要我們調(diào)用由Java編譯器自動調(diào)用。

二、方法重載

1.什么是方法重載?

定義:方法重載機制允許一個類中存在多個重名方法,但必須要求參數(shù)數(shù)量、(當數(shù)量一致)參數(shù)類型、(當數(shù)量類型一致)順序不一致。

參數(shù)數(shù)量→

參數(shù)數(shù)量

參數(shù)數(shù)量

參數(shù)類型→

參數(shù)類型

→參數(shù)順序

在上述JButton中我們可以選擇在按鈕上放字符串或者是圖標Image就體現(xiàn)了方法重載機制。

從方法重載不難推出構(gòu)造方法也可以重載,從而一個類可以定義多個構(gòu)造方法。

2.方法重載的代碼實例

public class Car {
    private String brand;
    private String model;
    private int year;

    // 無參構(gòu)造方法
    public Car() {
        this.brand = "Unknown";
        this.model = "Unknown";
        this.year = 0;
    }

    // 帶參數(shù)的構(gòu)造方法
    public Car(String brand, String model, int year) {
        this.brand = brand;
        this.model = model;
        this.year = year;
    }

    public void displayInfo() {
        System.out.println("Car brand: " + brand);
        System.out.println("Car model: " + model);
        System.out.println("Car year: " + year);
    }

    public static void main(String[] args) {
        Car car1 = new Car(); // 調(diào)用無參構(gòu)造方法
        car1.displayInfo();

        Car car2 = new Car("Toyota", "Camry", 2022); // 調(diào)用帶參數(shù)的構(gòu)造方法
        car2.displayInfo();
    }
}

三、整體代碼(構(gòu)造方法+方法重載)

import java.util.concurrent.ThreadLocalRandom;

public class Data {
    private int age;
    private String name;
    private boolean gender;
    private long ID;

    public Data(){
        this(10,"111",true);
    }

    /**
     * true:男
     * false:女
     */
    public Data(int age,String name,boolean gender){
        this.age=age;
        this.name=name;
        this.gender=gender;
        System.out.println("---------------------------");
        randomID();//可以不需要在主函數(shù)處調(diào)用兩次
        printInfo();
        //System.out.println("調(diào)用一次構(gòu)造方法");
        System.out.println("---------------------------");

    }

    public void printInfo(){
        System.out.println("age:"+age+"\nname:"+name+"\ngender:"+gender);
    }

    public void randomID(){
        ID= ThreadLocalRandom.current().nextLong();
        System.out.println("ID:"+ID);
    }

    public static void main(String[] args){
        Data data1 = new Data(1,"abc",true);//分別會輸出一次“調(diào)用一次xxxx”
        Data data2 = new Data(2,"www",false);
        //Data data = new Data();
    }

}

從代碼運行結(jié)果不難看出兩個data對象分別調(diào)用了一次構(gòu)造方法,總計兩次。

略有不同的是,我將所有方法的初始化都放在了構(gòu)造方法中(在構(gòu)造方法中調(diào)用了實例方法),所以主函數(shù)入口中看起來略顯單薄,這樣優(yōu)點確實代碼更加簡便一點,但同時也包含一些隱藏的缺點(如對象未完全初始化完成的情況下就提前輸出信息等等)。

總結(jié)

到此這篇關(guān)于Java中的構(gòu)造方法和方法重載的文章就介紹到這了,更多相關(guān)Java構(gòu)造方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis generator如何自動生成代碼

    Mybatis generator如何自動生成代碼

    這篇文章主要介紹了Mybatis generator如何自動生成代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • 使用MappingJackson2XmlView實現(xiàn)JSON到XML的視圖轉(zhuǎn)換

    使用MappingJackson2XmlView實現(xiàn)JSON到XML的視圖轉(zhuǎn)換

    MappingJackson2XmlView來實現(xiàn)從JSON到XML格式的響應(yīng)轉(zhuǎn)換,本文將通過案例,將展示如何將JSON格式的數(shù)據(jù)轉(zhuǎn)換為XML格式,以滿足不同客戶端的數(shù)據(jù)交換需求,需要的朋友可以參考下
    2024-07-07
  • Java異常java.lang.UnsatisfiedLinkError: no opencv_java320 in java.library.path的解決

    Java異常java.lang.UnsatisfiedLinkError: no opencv_ja

    這篇文章主要介紹了Java異常java.lang.UnsatisfiedLinkError: no opencv_java320 in java.library.path的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • JavaWeb之Filter與Listener使用解析

    JavaWeb之Filter與Listener使用解析

    這篇文章主要介紹了JavaWeb之Filter與Listener使用解析,Filter表示過濾器,是JavaWeb三大組件(Servlet、Filter、Listener)之一,過濾器可以把對資源的請求攔截下來,從而實現(xiàn)一些特殊的功能,需要的朋友可以參考下
    2024-01-01
  • Java中Dijkstra算法求解最短路徑的實現(xiàn)

    Java中Dijkstra算法求解最短路徑的實現(xiàn)

    Dijkstra算法是一種解決最短路徑問題的常用算法,本文主要介紹了Java中Dijkstra算法求解最短路徑的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java包含抽象方法的枚舉類示例

    Java包含抽象方法的枚舉類示例

    這篇文章主要介紹了Java包含抽象方法的枚舉類,結(jié)合實例形式分析了Java包含抽象方法的枚舉類實現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • Spring aop 如何通過獲取代理對象實現(xiàn)事務(wù)切換

    Spring aop 如何通過獲取代理對象實現(xiàn)事務(wù)切換

    這篇文章主要介紹了Spring aop 如何通過獲取代理對象實現(xiàn)事務(wù)切換的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springcloud注冊hostname或者ip的那些事

    springcloud注冊hostname或者ip的那些事

    Spring cloud是一個基于Spring Boot實現(xiàn)的服務(wù)治理工具包,在微服務(wù)架構(gòu)中用于管理和協(xié)調(diào)服務(wù)的。這篇文章主要介紹了springcloud注冊hostname或者ip,需要的朋友可以參考下
    2019-11-11
  • java  LinkedList源碼詳解及實例

    java LinkedList源碼詳解及實例

    這篇文章主要介紹了java LinkedList源碼詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java使用黑盒方式模擬實現(xiàn)內(nèi)網(wǎng)穿透

    Java使用黑盒方式模擬實現(xiàn)內(nèi)網(wǎng)穿透

    這篇文章主要介紹了Java使用黑盒方式模擬實現(xiàn)內(nèi)網(wǎng)穿透,內(nèi)網(wǎng)穿透,也即 NAT 穿透,進行 NAT 穿透是為了使具有某一個特定源 IP 地址和源端口號的數(shù)據(jù)包不被 NAT 設(shè)備屏蔽而正確路由到內(nèi)網(wǎng)主機,需要的朋友可以參考下
    2023-05-05

最新評論