在Java中,構造函數(shù)是類似于方法的代碼塊。它在創(chuàng)建類的實例時被調用。在調用構造函數(shù)時,對象的內存是在內存中分配的。
它是一種特殊類型的方法,用于初始化對象。
每次使用 new() 關鍵字創(chuàng)建對象時,至少會調用一個構造函數(shù)。
如果類中沒有可用的構造函數(shù),它會調用默認構造函數(shù)。在這種情況下,Java 編譯器默認提供默認構造函數(shù)。
Java 中有兩種類型的構造函數(shù):無參數(shù)構造函數(shù)和參數(shù)化構造函數(shù)。
注意:它被稱為構造函數(shù),因為它在對象創(chuàng)建時構造值。沒有必要為類編寫構造函數(shù)。這是因為如果您的類沒有默認構造函數(shù),java 編譯器會創(chuàng)建一個默認構造函數(shù)。
# 創(chuàng)建 Java 構造函數(shù)的規(guī)則
為構造函數(shù)定義了兩個規(guī)則。
-
構造函數(shù)名必須與其類名相同
-
構造函數(shù)必須沒有明確的返回類型
-
Java 構造函數(shù)不能是抽象的、靜態(tài)的、最終的和同步的
注意:我們可以在聲明構造函數(shù)時使用訪問修飾符。它控制對象的創(chuàng)建。換句話說,我們可以在 Java 中擁有 private、protected、public 或 default 構造函數(shù)。
# Java構造函數(shù)的類型
Java 中有兩種類型的構造函數(shù):
-
默認構造函數(shù)(無參數(shù)構造函數(shù))
-
參數(shù)化構造函數(shù)
# Java 默認構造函數(shù)
當構造函數(shù)沒有任何參數(shù)時,它被稱為“默認構造函數(shù)”。
默認構造函數(shù)的語法:
<類名>(){}
默認構造函數(shù)示例
在此示例中,我們在 Bike 類中創(chuàng)建無參數(shù)構造函數(shù)。它將在對象創(chuàng)建時被調用。
//Java 程序創(chuàng)建并調用默認構造函數(shù)
class Bike1{
//創(chuàng)建默認構造函數(shù)
Bike1(){System.out.println("自行車已創(chuàng)建");}
//主要方法
public static void main(String args[]){
//調用默認構造函數(shù)
Bike1 b=new Bike1();
}
}
輸出:
自行車已創(chuàng)建
規(guī)則:如果類中沒有構造函數(shù),編譯器會自動創(chuàng)建一個默認構造函數(shù)。
Q) 默認構造函數(shù)的目的是什么?
默認構造函數(shù)用于為對象提供默認值,如 0、null 等,具體取決于類型。
顯示默認值的默認構造函數(shù)示例
//讓我們看另一個默認構造函數(shù)的例子
//顯示默認值
class Student3{
int id;
String name;
//顯示id和name值的方法
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
//創(chuàng)建對象
Student3 s1=new Student3();
Student3 s2=new Student3();
//顯示對象的值
s1.display();
s2.display();
}
}
輸出:
0 null
0 null
說明:在上面的類中,您沒有創(chuàng)建任何構造函數(shù),因此編譯器為您提供了一個默認構造函數(shù)。這里 0 和 null 值由默認構造函數(shù)提供。
Java參數(shù)化構造函數(shù)
具有特定數(shù)量參數(shù)的構造函數(shù)稱為參數(shù)化構造函數(shù)。
為什么要使用參數(shù)化構造函數(shù)?
參數(shù)化構造函數(shù)用于為不同的對象提供不同的值。但是,您也可以提供相同的值。
參數(shù)化構造函數(shù)示例
在此示例中,我們創(chuàng)建了具有兩個參數(shù)的 Student 類的構造函數(shù)。我們可以在構造函數(shù)中有任意數(shù)量的參數(shù)。
//Java程序演示參數(shù)化構造函數(shù)的使用。
class Student4{
int id;
String name;
//創(chuàng)建參數(shù)化構造函數(shù)
Student4(int i,String n){
id = i;
name = n;
}
//顯示值的方法
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
//創(chuàng)建對象并傳遞值
Student4 s1 = new Student4(111,"小卡");
Student4 s2 = new Student4(222,"小安");
//調用方法顯示對象的值
s1.display();
s2.display();
}
}
輸出:
111 小卡
222 小安
# Java 中的構造函數(shù)重載
在 Java 中,構造函數(shù)就像一個方法,但沒有返回類型。它也可以像 Java 方法一樣被重載。
Java 中的構造函數(shù)重載是一種擁有多個具有不同參數(shù)列表的構造函數(shù)的技術。它們的排列方式使每個構造函數(shù)執(zhí)行不同的任務。編譯器根據列表中參數(shù)的數(shù)量及其類型來區(qū)分它們。
構造函數(shù)重載的例子
//Java程序重載構造函數(shù)
class Student5{
int id;
String name;
int age;
//創(chuàng)建兩個arg構造函
Student5(int i,String n){
id = i;
name = n;
}
//創(chuàng)建三參數(shù)構造函數(shù)
Student5(int i,String n,int a){
id = i;
name = n;
age=a;
}
void display(){System.out.println(id+" "+name+" "+age);}
public static void main(String args[]){
Student5 s1 = new Student5(111,"小卡");
Student5 s2 = new Student5(222,"小安",25);
s1.display();
s2.display();
}
}
輸出:
111 小卡 null
222 小安 25
# Java中構造函數(shù)和方法的區(qū)別
構造函數(shù)和方法之間存在許多差異。它們在下面給出。
Java構造函數(shù) | 方法 |
---|---|
構造函數(shù)用于初始化對象的狀態(tài)。 | 方法用于暴露對象的行為。 |
構造函數(shù)不能有返回類型。 | 方法必須有返回類型。 |
構造函數(shù)被隱式調用。 | 該方法被顯式調用。 |
如果類中沒有任何構造函數(shù),Java 編譯器會提供默認構造函數(shù)。 | 在任何情況下,編譯器都不會提供該方法。 |
構造函數(shù)名必須與類名相同。 | 方法名可能與類名相同,也可能不同。 |
# Java 復制構造函數(shù)
Java 中沒有復制構造函數(shù)。但是,我們可以將值從一個對象復制到另一個對象,就像 C++ 中的復制構造函數(shù)一樣。
在 Java 中有多種方法可以將一個對象的值復制到另一個對象中。他們是:
-
通過構造函數(shù)
-
通過將一個對象的值分配給另一個對象
-
通過 Object 類的 clone() 方法
在此示例中,我們將使用 Java 構造函數(shù)將一個對象的值復制到另一個對象中。
//Java 程序將值從一個對象初始化為另一個對象。
class Student6{
int id;
String name;
//初始化整數(shù)和字符串的構造函數(shù)
Student6(int i,String n){
id = i;
name = n;
}
//構造函數(shù)來初始化另一個對象
Student6(Student6 s){
id = s.id;
name =s.name;
}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
Student6 s1 = new Student6(111,"小卡");
Student6 s2 = new Student6(s1);
s1.display();
s2.display();
}
}
輸出:
111小卡
111小卡
問)構造函數(shù)是否返回任何值?
是的,它是當前的類實例(你不能使用返回類型但它返回一個值)。
構造函數(shù)可以執(zhí)行其他任務而不是初始化嗎?
是的,像創(chuàng)建對象、啟動線程、調用方法等。您可以像在方法中執(zhí)行操作一樣在構造函數(shù)中執(zhí)行任何操作。
Java中有構造函數(shù)類嗎?
有的。文章來源:http://www.zghlxwxcb.cn/news/detail-735952.html
Constructor類的目的是什么?
Java提供了一個Constructor類,可以用來獲取類中構造函數(shù)的內部信息。它位于 java.lang.reflect 包中。文章來源地址http://www.zghlxwxcb.cn/news/detail-735952.html
到了這里,關于【Java編程教程】詳解Java 構造函數(shù)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!