App下載

簡(jiǎn)述什么是Java構(gòu)造器? 怎么使用?

猿友 2021-07-15 10:11:18 瀏覽數(shù) (3531)
反饋

相信有很多初學(xué)Java的小伙伴在學(xué)習(xí)面對(duì)對(duì)象的時(shí)候,一個(gè)類里面既有構(gòu)造函數(shù),又有普通函數(shù),因?yàn)樗麄儍蓚€(gè)就像雙胞胎兄弟,所以區(qū)分得不是很明白。本文將為您介紹Java中的構(gòu)造器,重載方法,以及構(gòu)造函數(shù)和普通函數(shù)之間的區(qū)別。

構(gòu)造器

在學(xué)習(xí)之前,我們首先要了解什么是構(gòu)造器?構(gòu)造器能用來(lái)做什么?

構(gòu)造器:也就是我們前文提到的構(gòu)造函數(shù),也可以叫做構(gòu)造方法,是 Java 中一種特殊的函數(shù)。

作用:構(gòu)造器一般是用來(lái)初始化成員屬性和成員方法。當(dāng)我們使用?new?關(guān)鍵詞美創(chuàng)建一個(gè)新的對(duì)象,那么構(gòu)造器就會(huì)被調(diào)用一次。


構(gòu)造器的特點(diǎn)

  1. 函數(shù)名必須和類名相同。
  2. 不需要定義返回值類型。
  3. 每個(gè)對(duì)象都至少有一個(gè)構(gòu)造函數(shù),即使沒(méi)有創(chuàng)建構(gòu)造器,系統(tǒng)也會(huì)默認(rèn)添加一個(gè)無(wú)參構(gòu)造器。
  4. 如果有自定義的構(gòu)造器,那么系統(tǒng)就不會(huì)添加。

因?yàn)闃?gòu)造函數(shù)的名稱只能和類名相同,這也就是說(shuō)明了如果要自定義多個(gè)構(gòu)造函數(shù)的話,那么必然就會(huì)有重名的結(jié)果。在這里,就要先介紹Java中另外一個(gè)很重要的知識(shí)點(diǎn)——重載。

重載

定義:在同一個(gè)類當(dāng)中,方法可以有相同的方法名,但是所給的參數(shù)不一樣,那么這就叫做方法重載(Method Overloading)。。

特點(diǎn):和返回值類型無(wú)關(guān),只和參數(shù)列表有關(guān)系。(參數(shù)個(gè)數(shù)、參數(shù)類型、參數(shù)順序)。

那么方法重載后,會(huì)不會(huì)影響前面寫過(guò)的方法函數(shù)?

答案是不會(huì)的!方法重載并不會(huì)對(duì)前面的方法函數(shù)進(jìn)行覆蓋。

同樣的方法名,不同的方法函數(shù)。


構(gòu)造器的示例用法

無(wú)參構(gòu)造器

創(chuàng)建一個(gè)?People?對(duì)象,定義一個(gè)無(wú)參構(gòu)造器(為了更直觀看到是否調(diào)用了構(gòu)造器,在其中添加了一個(gè)打印。)

public class People {
        String name;
        Integer age;
        String gender;

        public People() {
            System.out.println("已經(jīng)調(diào)用了這個(gè)無(wú)參構(gòu)造器。");
        }
}

用?new?關(guān)鍵詞創(chuàng)建一個(gè)新對(duì)象

public class Demo {
    public static void main(String[] args) {
        People p1 = new People();
    }
}

輸出結(jié)果

java構(gòu)造器輸出結(jié)果


有參構(gòu)造器

有參構(gòu)造器也就是比無(wú)參構(gòu)造器多一些參數(shù)類型,參數(shù)值。

寫法

public 類名 (參數(shù)類型1 參數(shù)值1, 參數(shù)類型2 參數(shù)值2...){}

自定義一個(gè)有參構(gòu)造器

public People(String name, Integer age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

創(chuàng)建一個(gè)名為?p2?的對(duì)象,來(lái)調(diào)用自定義的有參構(gòu)造器

People p2 = new People("Jack", 15, "男");
System.out.println(p2.name+"是一個(gè)"+p2.age+"歲的"+p2.gender+"生.");

輸出結(jié)果

java有參構(gòu)造器的輸出結(jié)果

看到這里,對(duì)構(gòu)造器有了一個(gè)大概的了解了。接下來(lái),我們說(shuō)說(shuō)構(gòu)造函數(shù)和普通函數(shù)的區(qū)別。

構(gòu)造函數(shù)和普通函數(shù)的區(qū)別

構(gòu)造函數(shù)和普通函數(shù)長(zhǎng)得非常相似,就像是雙胞胎一樣。但即便是雙胞胎,他們之前也會(huì)存在一些的區(qū)別的。

  • 普通函數(shù)的函數(shù)名可以根據(jù)個(gè)人愛(ài)好自定義的;構(gòu)造函數(shù)的函數(shù)名只能是和類名一樣。
  • 普通函數(shù)可以用void來(lái)修飾,也可以有返回值;構(gòu)造函數(shù)則既不能用void修飾,也沒(méi)有返回值。
  • 一般情況下,建議的是普通函數(shù)使用小駝峰式命名法,即首字母小寫;構(gòu)造函數(shù)和類名首字母要大寫。
  • 普通函數(shù)是可以直接通過(guò)?函數(shù)名()?來(lái)直接調(diào)用;構(gòu)造函數(shù)則是在new?關(guān)鍵詞創(chuàng)建對(duì)象時(shí)才調(diào)用。

總結(jié)

關(guān)于Java構(gòu)造器、重載方法以及構(gòu)造函數(shù)和普通函數(shù)之間的區(qū)別就介紹到此結(jié)束了。如果想要了解更多有關(guān)于Java知識(shí)的內(nèi)容,請(qǐng)搜索W3Cschool以前的文章或是繼續(xù)瀏覽相關(guān)文章。


0 人點(diǎn)贊