App下載

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

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

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

構(gòu)造器

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

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

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


構(gòu)造器的特點

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

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

重載

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

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

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

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

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


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

無參構(gòu)造器

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

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

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

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

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

輸出結(jié)果

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


有參構(gòu)造器

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

寫法

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

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

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

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

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

輸出結(jié)果

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

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

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

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

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

總結(jié)

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


0 人點贊