Java 中預設建構函式與帶參建構函式有哪些區別?
預設建構函式
- 預設建構函式是一個不帶任何引數的建構函式,它包含一個不帶任何引數的呼叫超類建構函式的呼叫。
- 向新建立的物件分配預設值是預設建構函式的主要職責。
- 如果程式未在類中編寫任何建構函式,則編譯器會在程式碼中編寫一個預設建構函式。
- 預設建構函式的訪問修飾符始終與類修飾符相同,但此規則僅適用於“public”和“default”修飾符。
編譯器何時會新增一個預設建構函式
- 當程式設計師在程式碼中未編寫任何建構函式時,編譯器才會將一個預設建構函式新增到程式碼中。
- 如果程式設計師在程式碼中編寫了任何建構函式,則編譯器不會新增任何建構函式。
- 每個預設建構函式都是一個不帶任何引數的建構函式,但每個不帶任何引數的建構函式都不是一個預設建構函式。
帶參建構函式
- 帶參建構函式是有著一個特定數量的引數需傳入的建構函式。
- 引數化建構函式的目的是為不同物件的例項變數分配使用者指定的特定值。
- 引數化建構函式由程式設計師明確書寫。
- 預設建構函式的訪問修飾符始終與類修飾符相同,但此規則僅適用於“public”和“default”修飾符。
示例
public class Student {
int roll_no;
String stu_name;
Student(int i, String n) { // Parameterized constructor
roll_no = i;
stu_name = n;
}
void display() {
System.out.println(roll_no+" "+stu_name);
}
public static void main(String args[]) {
Student s1 = new Student(1,"Adithya");
Student s2 = new Student(2,"Jai");
s1.display();
s2.display();
}
}在上述程式中,程式設計師使用兩個引數定義了一個引數化建構函式。現在,編譯器不會在程式碼中新增任何預設建構函式,而且程式設計師也沒有編寫任何 0 引數建構函式。
輸出
1 Adithya 2 Jai
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
安卓
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP