最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的構(gòu)造方法(構(gòu)造函數(shù))與普通方法區(qū)別及說(shuō)明

 更新時(shí)間:2024年03月25日 09:29:26   作者:feng之鋒  
這篇文章主要介紹了Java中的構(gòu)造方法(構(gòu)造函數(shù))與普通方法區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、明白什么是構(gòu)造方法,什么是普通方法?

所謂的構(gòu)造方法,是一種特殊的方法,其作用是用來(lái)創(chuàng)建對(duì)象時(shí)初始化對(duì)象,即為對(duì)象成員變量賦初始值,總是與new運(yùn)算符一起使用在創(chuàng)建對(duì)象的語(yǔ)句中。

特別的,一個(gè)類是可以有多個(gè)構(gòu)造函數(shù),可以根據(jù)參數(shù)個(gè)數(shù)的不同或者參數(shù)類型的不同來(lái)區(qū)分它們,即為構(gòu)造函數(shù)的重載。

構(gòu)造方法是類的一個(gè)特殊的成員,在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用,其構(gòu)造方法定義格式如下:

修飾符 方法名(){}

其中需要注意的是:

  • 方法名與類名相同;
  • 沒有返回值類型;
  • 沒有具體的返回值

例如接下來(lái)這個(gè)例子,在創(chuàng)建對(duì)象的時(shí)候,對(duì)象成員可以由構(gòu)造函數(shù)方法進(jìn)行初始化。

new對(duì)象時(shí),都是用構(gòu)造方法進(jìn)行實(shí)例化的;

例如;Test test = new Test("a");

 //Test("a");其中這個(gè)就是構(gòu)造函數(shù),“a”為構(gòu)造方法的形參;

而普通方法是簡(jiǎn)單來(lái)說(shuō)就是完成特定功能的代碼塊。

其定義的格式如下:

修飾符 返回值類型 方法名 (參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2,…)
{
函數(shù)體;
return 返回值;
}

其中:返回值類型用于限定返回值的數(shù)據(jù)類型。

二、 明白構(gòu)造方法和普通方法的特點(diǎn)和作用是什么?

1.構(gòu)造方法的特點(diǎn)

構(gòu)造函數(shù)的主要作用是完成對(duì)象的初始化工作,(如果寫的類里面沒有構(gòu)造函數(shù),那么編譯器會(huì)默認(rèn)加上一個(gè)無(wú)參數(shù)且方法體為空的構(gòu)造函數(shù)).

它能夠把定義對(duì)象時(shí)的參數(shù)傳給對(duì)象的域。意即當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),這個(gè)對(duì)象就被初始化.如果這時(shí)構(gòu)造函數(shù)不為空,則會(huì)在創(chuàng)建對(duì)象時(shí)就執(zhí)行構(gòu)造函數(shù)里面的代碼:

構(gòu)造函數(shù)的名稱必須與類名相同,包括大小寫。

構(gòu)造函數(shù)沒有返回值的,也不能用void來(lái)進(jìn)行修飾。如果不小心給構(gòu)造函數(shù)添加了返回類型,那么這將使這個(gè)構(gòu)造函數(shù)變成一個(gè)普通方法了,則在運(yùn)行時(shí)將產(chǎn)生找不到構(gòu)造方法的錯(cuò)誤。

④一個(gè)類可以定義多個(gè)構(gòu)造方法,如果在定義類時(shí)定義構(gòu)造方法,則編譯系統(tǒng)會(huì)自動(dòng)插入一個(gè)無(wú)參數(shù)的默認(rèn)構(gòu)造器,這個(gè)構(gòu)造器不執(zhí)行任何代碼。

構(gòu)造方法可以重載,以參數(shù)的個(gè)數(shù),類型,順序來(lái)重載。例如:

public static void main(String[] args) {
        Phone p1 = new Phone();
        p1.show();
        
        System.out.println("----------------");
        
        Phone p2 = new Phone("vivoxplay5",2999);
        p2.show();
    }        
}

class Phone{
    private String brand;  //品牌
    private int price;       //價(jià)格
    
    //無(wú)參構(gòu)造方法
    public Phone(){
        System.out.println("無(wú)參構(gòu)造");
    }

    //有參構(gòu)造器
    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
        System.out.println("有參構(gòu)造");
    }
    
    public void show(){
        System.out.println(brand+"..."+price);
    }

    
}

構(gòu)造方法給成員變量賦值的兩種方式的區(qū)別:

/**
     * 無(wú)參構(gòu)造方法:給屬性進(jìn)行初始化
     * set/get方法:修改屬性值
     * @param args
     */
public static void main(String[] args) {
        //無(wú)參構(gòu)造創(chuàng)建對(duì)象
        Phone p1 = new Phone();    
        p1.setBrand("vivoxplay5");
        p1.setPrice(2999);
        
        p1.setBrand("vivo");
        p1.show();
        
        System.out.println("----------------");
        //有參構(gòu)造創(chuàng)建對(duì)象
        Phone p2 = new Phone("vivoxplay5",2999);
        //這種方式并不是改名,而是將原對(duì)象變成垃圾
        //p2 = new Phone("vivo",2000);
        p2.show();
    }        
}

class Phone{
    private String brand;  //品牌
    private int price;       //價(jià)格
    
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    //無(wú)參構(gòu)造方法
    public Phone(){
        System.out.println("無(wú)參構(gòu)造");
    }

    //有參構(gòu)造器
    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
        System.out.println("有參構(gòu)造");
    }
    
    public void show(){
        System.out.println(brand+"..."+price);
    }

    
}

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

【1】 首先,構(gòu)造函數(shù)用來(lái)生成并初始化對(duì)象;

【2】其次,構(gòu)造函數(shù)可以通過(guò)函數(shù)的重寫給對(duì)象賦初始值,簡(jiǎn)化代碼,例如:

在這段代碼中,本文創(chuàng)建了兩個(gè)Person對(duì)象,分別賦給了初始值,但是如果創(chuàng)建的對(duì)象比較多的話,代碼就顯得很重復(fù),這時(shí)可以重載Person類里面的構(gòu)造方法,以在創(chuàng)建對(duì)象的時(shí)候就賦給它們初始值,這樣就可以省去重復(fù)的代碼了:

在這里有一個(gè)問題需要特別的注意

在默認(rèn)的情況下,一個(gè)類會(huì)有一個(gè)默認(rèn)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)沒有內(nèi)容也沒有返回值,一般會(huì)省略。

在這種情況下,編譯器在編譯的時(shí)候會(huì)默認(rèn)加上一個(gè)無(wú)參且方法體為空的函數(shù)。但是,如果類的構(gòu)造函數(shù)被重寫了,如上述的例子,Person類已經(jīng)有了一個(gè)有參數(shù)有方法體的構(gòu)造函數(shù),這是編譯器就不會(huì)再給它默認(rèn)加上一個(gè)無(wú)參且方法體為空的構(gòu)造函數(shù),可以理解為無(wú)參的構(gòu)造函數(shù)被覆蓋了,這種情況稱為沒有默認(rèn)構(gòu)造函數(shù)。

而在函數(shù)的繼承里,子類必須調(diào)用父類的構(gòu)造函數(shù)。但是子類只能繼承父類的默認(rèn)的構(gòu)造函數(shù),如果父類沒有默認(rèn)的構(gòu)造函數(shù),那么子類不能從父類繼承默認(rèn)構(gòu)造函數(shù),這是子類必須使用super來(lái)實(shí)現(xiàn)對(duì)父類的非默認(rèn)構(gòu)造函數(shù)的調(diào)用。

因此,在創(chuàng)建對(duì)象的時(shí)候,需要先利用super來(lái)調(diào)用父類的默認(rèn)的構(gòu)造函數(shù)來(lái)對(duì)對(duì)象進(jìn)行初始化,然后調(diào)用子類自己定義的構(gòu)造函數(shù)。

3.普通方法的特點(diǎn)與作用

【1】普通方法的特點(diǎn):

方法是解決一類問題的步驟的有序組合;

②一個(gè)方法必須屬于某一個(gè)類的,獨(dú)立于類的方法不存在的;

③Java的普通方法可以操作調(diào)用它從屬的對(duì)象和參數(shù)列表中的參數(shù);

普通方法的調(diào)用方式為:對(duì)象.方法名(參數(shù)),如接下來(lái)的代碼為例:

public void driverCar (int a,double b) {
    speed= 50;
    direction= "南方";
}

⑤Java方法只能有一個(gè)返回值,但是“值”的形式具有多樣性 

【2】作用:

完成特定功能的代碼塊,即根據(jù)自己項(xiàng)目的需要,進(jìn)行自己編碼完成項(xiàng)目所需要的功能。

三、明白構(gòu)造方法和普通方法的調(diào)用方式是怎樣調(diào)用的?

1)構(gòu)造方法的調(diào)用方式

構(gòu)造方法分為:無(wú)參構(gòu)造方法有參構(gòu)造方法

A. 無(wú)參構(gòu)造方法:

public class Student{
public  Student(){                    //無(wú)參構(gòu)造方法

System.out.println("無(wú)參方法被調(diào)用");

}

}

public class Test {
public  static void main (String[]  args){
Student   stu = new Student();  //實(shí)例化Student對(duì)象

}

}//該方法是無(wú)參的構(gòu)造方法,即構(gòu)造方法不接收參數(shù),執(zhí)行后輸出即可,無(wú)參的構(gòu)造方法被調(diào)用。

B. 有參構(gòu)造方法

為一個(gè)屬性賦值有兩種方法:

①直接訪問對(duì)象屬性

②通過(guò)setXxx()方法

如果想在實(shí)例化對(duì)象的同時(shí)就為了對(duì)象的屬性進(jìn)行賦值,可以通過(guò)帶參數(shù)的構(gòu)造方法來(lái)實(shí)現(xiàn)

public class Student{
private String name;
private int  age;
public  Student(String name,int age){             //有參構(gòu)造方法
    this.name = name;
    this.age  = age ;
}
public  void show (){
System.out.println("姓名:"+name+"年齡:"+age);
}
}
public  class  Test02(){
public static void main (String[]   args)
{
Student  stu = new Student("王小五",25);     //實(shí)例化對(duì)象的同時(shí)賦值
stu.show();
}
}

2)普通方法的調(diào)用方式

普通方法分為 有明確返回值的方法沒有明確返回值的方法

A. 有明確返回值的方法的調(diào)用

可以單獨(dú)調(diào)用(無(wú)意義),輸出調(diào)用,賦值調(diào)用(推薦)。

public static int sum (int a , int b)
{
    int c = a+b;
    return c ;
}
public static void main(String[] args)
{
           //sum(10,20); //單獨(dú)調(diào)用
           //System.out.println(sum(10,20));  //輸出調(diào)用
           int sum01 =sum(10,20); //賦值調(diào)用
}

B. 沒有明確返回值的方法調(diào)用(void類型方法的調(diào)用)

只能單獨(dú)使用。(如果一個(gè)方法沒有明確的返回值類型,方法定義中“返回值類型”就可以用void代替,表示該方法無(wú)返回值類型。)

四、注意事項(xiàng)

① Java中的每一類至少有一個(gè)構(gòu)造方法,如果我們沒有去創(chuàng)建,系統(tǒng)自動(dòng)會(huì)為我們創(chuàng)建一個(gè)默認(rèn)的無(wú)參構(gòu)造方法;

②但是如果我們定義了構(gòu)造方法,系統(tǒng)就不會(huì)再為我們提供默認(rèn)的無(wú)參構(gòu)造方法了。這個(gè)時(shí)候想使用無(wú)參構(gòu)造方法必須自己定義。因?yàn)閷?shí)例化對(duì)象時(shí),不一定會(huì)輸入?yún)?shù),那么沒有無(wú)參的構(gòu)造方法,又不輸入?yún)?shù),就會(huì)出錯(cuò);

③構(gòu)造方法需要用public來(lái)修飾,若使用private,在其他類中無(wú)法將其實(shí)例化;

④構(gòu)造方法是可以重載的。所謂重載,是指一個(gè)類中可以定義多個(gè)方法名相同,但是參數(shù)不同的方法。調(diào)用時(shí),會(huì)根據(jù)不同的參數(shù)自動(dòng)匹配對(duì)應(yīng)的方法。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot主鍵ID傳到前端后精度丟失的問題解決

    SpringBoot主鍵ID傳到前端后精度丟失的問題解決

    這篇文章主要通過(guò)示例為大家詳細(xì)介紹一些SpringBoot如何解決雪花算法主鍵ID傳到前端后精度丟失問題,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-05-05
  • Spring?Cloud?Hystrix原理與注意事項(xiàng)小結(jié)

    Spring?Cloud?Hystrix原理與注意事項(xiàng)小結(jié)

    本文介紹了Hystrix的基本概念、工作原理以及其在實(shí)際開發(fā)中的應(yīng)用方式,通過(guò)對(duì)Hystrix的深入學(xué)習(xí),開發(fā)者可以在分布式系統(tǒng)中實(shí)現(xiàn)精細(xì)的錯(cuò)誤處理機(jī)制,并能夠及時(shí)響應(yīng)系統(tǒng)中的異常,避免服務(wù)的連鎖崩潰,感興趣的朋友一起看看吧
    2025-03-03
  • Java中try catch處理異常示例

    Java中try catch處理異常示例

    這篇文章主要給大家介紹了關(guān)于Java中try catch 的基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • JAVA自定義注解的步驟示例詳解

    JAVA自定義注解的步驟示例詳解

    本文介紹了Java中注解的基本概念、自定義注解的步驟、常用元注解的解析以及自定義注解的常見應(yīng)用場(chǎng)景,自定義注解可以幫助開發(fā)者實(shí)現(xiàn)日志記錄、權(quán)限校驗(yàn)、參數(shù)校驗(yàn)等通用功能,提高代碼的復(fù)用性和可讀性,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • 分布式醫(yī)療掛號(hào)系統(tǒng)SpringCache與Redis為數(shù)據(jù)字典添加緩存

    分布式醫(yī)療掛號(hào)系統(tǒng)SpringCache與Redis為數(shù)據(jù)字典添加緩存

    這篇文章主要為大家介紹了分布式醫(yī)療掛號(hào)系統(tǒng)SpringCache與Redis為數(shù)據(jù)字典添加緩存,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Java常用的八種排序算法與代碼實(shí)現(xiàn)

    Java常用的八種排序算法與代碼實(shí)現(xiàn)

    這篇文章主要給給大家分享Java常用的八種排序算法與代碼實(shí)現(xiàn),下面文章將詳細(xì)介紹整個(gè)實(shí)現(xiàn)過(guò)程,感興趣的小伙伙伴可以跟著小編一起來(lái)學(xué)習(xí),希望對(duì)你有所幫助
    2021-10-10
  • Spring Boot核心注解@ResponseBody深度解析與實(shí)戰(zhàn)指南

    Spring Boot核心注解@ResponseBody深度解析與實(shí)戰(zhàn)指南

    SpringBoot中@ResponseBody注解詳解,全面拆解其核心作用、工作原理、實(shí)戰(zhàn)示例、簡(jiǎn)化用法及注意事項(xiàng),本文介紹Spring Boot核心注解@ResponseBody深度解析與實(shí)戰(zhàn)指南,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Java利用泛型實(shí)現(xiàn)折半查找法

    Java利用泛型實(shí)現(xiàn)折半查找法

    泛型是JAVA重要的特性,使用泛型編程,可以使代碼復(fù)用率提高。查找作為泛型的一個(gè)簡(jiǎn)單應(yīng)用,本文將使用泛型實(shí)現(xiàn)折半查找法,感興趣的可以了解一下
    2022-08-08
  • Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析(經(jīng)典)

    Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析(經(jīng)典)

    這篇文章主要介紹了Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析,結(jié)合實(shí)例形式較為詳細(xì)的分析說(shuō)明了jdk1.4,jdk1.5和jdk1.6版本的使用區(qū)別,需要的朋友可以參考下
    2015-12-12
  • Spring AOP注解實(shí)戰(zhàn)指南

    Spring AOP注解實(shí)戰(zhàn)指南

    在現(xiàn)代軟件開發(fā)中,面向切面編程(AOP)是一種強(qiáng)大的編程范式,本文將介紹如何在Spring框架中通過(guò)AspectJ注解以及對(duì)應(yīng)的XML配置來(lái)實(shí)現(xiàn)AOP,在不改變主業(yè)務(wù)邏輯的情況下增強(qiáng)應(yīng)用程序的功能,需要的朋友可以參考下
    2024-06-06

最新評(píng)論

含山县| 金沙县| 鄂托克前旗| 南乐县| 长岛县| 清水河县| 平度市| 凯里市| 田阳县| 衡山县| 田阳县| 顺昌县| 麦盖提县| 铜梁县| 普兰县| 广汉市| 丰城市| 阜新市| 社旗县| 白朗县| 周至县| 葫芦岛市| 鹤峰县| 民县| 宁强县| 长垣县| 灌云县| 广安市| 绥德县| 钟山县| 章丘市| 钦州市| 广东省| 名山县| 丰镇市| 米林县| 文成县| 牡丹江市| 达州市| 隆化县| 得荣县|