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
广告