Java 构造函数
Java 构造函数 是 方法,用于在创建对象时对其进行初始化。它与其类具有相同的名称,并且在语法上类似于方法。但是,构造函数没有显式返回类型。
通常,您将使用构造函数为实例赋予初始值变量 由类定义或执行创建完全形成的对象所需的任何其他启动过程。
所有类都有构造函数,无论您是否定义一个构造函数,因为 Java 自动提供了一个默认构造函数将所有成员变量初始化为零。但是,一旦定义构造函数,就不再使用默认构造函数。
创建 Java 构造函数的规则
创建 Java 构造函数时必须遵循以下规则:
- 构造函数的名称必须与类名称相同。
- Java 构造函数没有返回类型。甚至不使用 void 作为返回类型。
- 同一个类中可以有多个构造函数,这个概念称为构造函数重载。
- 访问修饰符可以与构造函数一起使用,如果您想更改构造函数的可见性/可访问性,请使用它。
- Java 提供了一个默认构造函数,在对象创建期间被调用。如果您创建任何类型的构造函数,则不会调用默认构造函数(由 Java 提供)。
创建 Java 构造函数
要在 Java 中创建构造函数,只需在括号内写入构造函数的名称(与类名称相同),然后在大括号内写入构造函数的主体 ({})。
语法
以下是构造函数的语法 -
class ClassName {
ClassName() {
}
}
创建 Java 构造函数的示例
以下示例创建一个简单的构造函数,它将打印"Hello world"。
public class Main {
// 创建构造函数
Main() {
System.out.println("Hello, World!");
}
public static void main(String[] args) {
System.out.println("The main() method.");
// 创建类的对象
// 将调用构造函数
Main obj_x = new Main();
}
}
这个程序将打印:
The main() method.
Hello, World!
Java 构造函数的类型
Java 中有三种不同类型的构造函数,我们有列出如下:
- 默认构造函数
- 无参数构造函数
- 参数化构造函数
1.默认构造函数
如果在类中没有创建任何构造函数,Java 会提供一个默认构造函数来初始化对象。
示例:默认构造函数(没有任何构造函数的类)
在这个例子中,没有我们定义的构造函数。默认构造函数用于初始化对象。
public class Main {
int num1;
int num2;
public static void main(String[] args) {
//我们没有创建任何结构
//默认构造函数将在此处调用
Main obj_x = new Main();
// 打印值
System.out.println("num1 : " + obj_x.num1);
System.out.println("num2 : " + obj_x.num2);
}
}
输出
num1 : 0
num2 : 0
2. 无参构造函数
正如名称所示,无参数构造函数不接受任何参数。通过使用无参数构造函数,您可以初始化类数据成员并执行对象创建时所需的各种活动。
示例:无参数构造函数
此示例创建无参数args 构造函数。
public class Main {
int num1;
int num2;
// 创建无参数构造函数
Main() {
num1 = -1;
num2 = -1;
}
public static void main(String[] args) {
// 无参数构造函数将调用
Main obj_x = new Main();
// 打印值
System.out.println("num1 : " + obj_x.num1);
System.out.println("num2 : " + obj_x.num2);
}
}
输出
num1 : -1
num2 : -1
3.参数化构造函数
具有一个或多个参数的构造函数称为参数化构造函数。
大多数情况下,您需要一个接受一个或多个参数的构造函数。参数添加到构造函数的方式与添加到方法的方式相同,只需在构造函数名称后面的括号内声明它们即可。
示例 1:参数化构造函数
此示例创建参数化构造函数。
public class Main {
int num1;
int num2;
// 创建参数化构造函数
Main(int a, int b) {
num1 = a;
num2 = b;
}
public static void main(String[] args) {
// 通过传递值创建两个对象
//初始化属性。
//参数化构造函数将调用
Main obj_x = new Main(10, 20);
Main obj_y = new Main(100, 200);
// 打印对象值
System.out.println("obj_x");
System.out.println("num1 : " + obj_x.num1);
System.out.println("num2 : " + obj_x.num2);
System.out.println("obj_y");
System.out.println("num1 : " + obj_y.num1);
System.out.println("num2 : " + obj_y.num2);
}
}
输出
obj_x
num1 : 10
num2 : 20
obj_y
num1 : 100
num2 : 200
示例 2:参数化构造函数
这里是一个使用构造函数的简单示例−
// 一个简单的构造函数。
class MyClass {
int x;
//以下是构造函数
MyClass(int i ) {
x = i;
}
}
您将调用构造函数来初始化对象,如下所示 −
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass( 10 );
MyClass t2 = new MyClass( 20 );
System.out.println(t1.x + " " + t2.x);
}
}
输出
10 20
Java 中的构造函数重载
构造函数重载是指一个类中有多个构造函数。当您有多个列出不同参数的构造函数时,则称为构造函数重载。
示例:构造函数重载
在此示例中,我们有多个构造函数。
//Java构造函数重载示例
// 创建学生班级
class Student {
String name;
int age;
// 无参数构造函数
Student() {
this.name = "Unknown";
this.age = 0;
}
// 有一个参数的参数化构造函数
Student(String name) {
this.name = name;
this.age = 0;
}
// 具有两个参数的参数化构造函数
Student(String name, int age) {
this.name = name;
this.age = age;
}
public void printDetails() {
System.out.println("Name : " + this.name);
System.out.println("Age : " + this.age);
}
}
public class Main {
public static void main(String[] args) {
Student std1 = new Student(); //调用无参数构造函数
Student std2 = new Student("Jordan"); //调用参数化构造函数
Student std3 = new Student("Paxton", 25); //调用参数化构造函数
//打印详细信息
System.out.println("std1...");
std1.printDetails();
System.out.println("std2...");
std2.printDetails();
System.out.println("std3...");
std3.printDetails();
}
}
输出
td1...
Name : Unknown
Age : 0
std2...
Name : Jordan
Age : 0
std3...
Name : Paxton
Age : 25