首頁  >  文章  >  Java  >  Java 中的建構函數

Java 中的建構函數

WBOY
WBOY原創
2024-08-30 15:26:34312瀏覽

Java中的建構子是用來初始化類別的物件的特殊型別的方法。構造函數在類別的物件創建時被呼叫。就像方法一樣,雖然它們持有一組程式碼行,但它們與它們有很大不同。建構函數與 Java 類別具有相同的名稱,但它沒有任何傳回類型。在Java中,new()關鍵字用於建立一個對象,每次建立一個新對象並呼叫一個建構函式時。構造函數在為物件分配記憶體後被呼叫。在建立物件時,建構函式用於將類別變數的值初始化為預設值或所需的值。

如果使用者沒有在程式中建立任何建構函數,Java 本身會為其建立一個預設建構函數,並將預設值指派給不同的對象,例如數字預設值為0,字元(' ')和引用變數為無效的。與方法一樣,建構函數可以重載,即單一類別可以有多個建構函數,如果它們都具有唯一的簽名。

廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗

Java中建構子的基本語法如下:

文法:

public class Student() // name of the class
{
. . . .
. . . .
. . . .
Student() // this is Constructor with the same name of class
{
. . .
. . .
}
new Student(); // object creation and value initialization
}

在上面的語法中,Student() 是建構子的名稱,與類別的名稱相同,Java 中的物件是使用關鍵字 new 建立的。

Java 中的建構子如何運作?

為了了解 Java 中建構函數的工作原理,讓我們來看看下面給出的範例:

代碼:

public class Student()
{
int rollno;
String name;
Student(int rollno, String name)
{
this.rollno = rollno;
this.name = name;
}
public static void main(String[] args)
{
Student st = new Student(12, 'Ananya');
System.out.println("Student name = "+ st.name + "Student rollno = "+st.rollno);
}
}

輸出:

Java 中的建構函數

在上面的例子中,我們有實例變數(類別變數)。 roll no 和name 和st 是Student類別建立的物件的名稱。建立物件時,它會呼叫建構函式 Student 並初始化類別變量,其中 roll no 值為 12,名稱為「Ananya」;否則,預設值(例如 rollno 的 0 和名稱的 null)將被指派給變數。因此,在分配值並列印它們之後,學生姓名將列印為 Ananya,學生卷號將列印為 12。

Java 中的建構子類型

Java中有2種基於參數的建構子:

1.非參數化/無參數建構子

當我們不在建構子中傳遞參數時,該建構子稱為非參數化或無參數建構子。當程式設計師在Java程式中沒有定義任何建構函數時,Java編譯器本身會加入一個建構函數,稱為預設建構函數,它為物件提供預設值,如0、null等。預設建構函數不是特殊型別的建構函數但屬於無參數建構函數的範疇。

範例(預設建構子)

代碼:

public class Hello()
{
String name;
void display() //method to display name the value of variables
{
System.out.println("name is" +name);
}
}
public class HelloMain()
{
public static void main(String[] args)
{
Hello h1 = new Hello();
h1.display();
}
}

輸出:
Java 中的建構函數

在上面的例子中,這不是程式設計師定義的建構函數,因此編譯器會將此程式視為:

代碼:

public class Hello()
{
String name;
Hello() //default constructor created by compiler
{
name = null
}
void display()
{
System.out.println("name is" +name);
}
}
public class HelloMain()
{
public static void main(String[] args)
{
Hello h1 = new Hello();
h1.display();
}
}
範例(非參數化建構子)

代碼:

public DemoProgram() // class
{
DemoProgram() // constructor with no arguments
{
System.out.println("Hello this is just an example of no-arg constructor");
}
public static void main(String[] args)
{
new DermoProgram();
}
}

輸出:

Java 中的建構函數

如上例所示,對於建構子 DemoProgram(),沒有傳遞任何參數,僅列印訊息,因此稱為無參構造函數。

2.參數化建構子

參數化建構子是我們在其中傳遞實參或形參的建構子。在此建構函式中,值在建立物件時傳遞。

範例(參數化建構子)

代碼:

public class Animal()
{
int legs;
String sound;
Animal(int legs, String sound) // parameterized constructor
{
this.legs = legs; // values with get initialize of what is passed while object crea-this.sound = sound; // tion, i.e. (4, “bow bow”)
}
void display() // method to display the values
{
System.out.println("Legs are "+legs+"Sound is "+sound);
}
}
class AnimalPlanet()
{
public static void main(String[] args)
{
Animal an = new Animal(4, "bow bow");
an.display();
}
}

輸出:

Java 中的建構函數

在上面的範例中,值 4 被分配給了腿部,字串「bow Bow」被分配給了構造器 Animal 中的聲音。因此,當呼叫方法 display 時,兩個值都會列印在輸出中。

要記住的重要要點

  • 每個類別都有一個建構函數,無論程式設計師是否創建它。
  • 建構函式名稱應與類別名稱相同。
  • 與方法不同,建構子沒有回傳型別。
  • this() 和 super() 關鍵字必須是建構子中的第一個語句。
  • 與方法一樣,建構函式也可以重載。
  • 建構函式不能被重寫。
  • 一個建構子可以使用關鍵字 this() 呼叫同一類別的另一個建構子。
  • 可以在建構函數名稱之前應用存取說明符/修飾符,以聲明其在類別中的範圍。
  • 在 Java 中,建構子永遠不可能是靜態的、最終的、抽象的、同步的。

結論

建構函式在使用 Java 程式語言時發揮著重要作用。我們必須了解建構函式的完整概念、建構函式的各種類型、建構函式鏈以及用於呼叫父建構函式的 super() 關鍵字,以便根據特定場景進行工作。雖然在 Java 中使用建構函數非常簡單,就像使用方法一樣,但有一些具體的要點應該徹底學習。

以上是Java 中的建構函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn