HOWTO · Java
Java 中的实例化是什么意思
本文讲授 Java 中的实例化主题。
本页内容
在 Java 中,实例化一个类就是创建该类的一个对象;new 会创建对象并返回一个引用,供你保存和使用。
在 Java 中实例化一个类是什么意思?
在 Java 中,实例化一个类就是创建该类的一个对象。类定义了对象可以拥有的字段和方法;对象则是该类的一个具体实例,并拥有自己的字段值。像 car 这样的变量保存了对象的引用,因此你可以通过这个引用访问对象的字段和方法。
new 如何创建对象,构造函数如何初始化对象
下面的示例会创建一个 Car 对象,将它的引用保存到 car 中,然后调用该对象的方法:
public class Car {
private final String model;
private final String color;
Car(String model, String color) {
this.model = model;
this.color = color;
}
void display() {
System.out.println("Car model: " + model + ", Color: " + color);
}
public static void main(String[] args) {
Car car = new Car("Toyota", "Red");
car.display();
}
}
表达式 new Car("Toyota", "Red") 会创建一个 Car 实例,并用两个参数调用它的构造函数。该表达式会产生一个引用,赋值操作再将这个引用保存到 car 中。构造函数的名称与类名相同,且没有返回类型;它可以使用参数为新对象设置字段值。程序通过该引用打印车型和颜色。
类不一定要显式编写构造函数。只有当类没有声明自己的任何构造函数时,Java 才会提供一个无参默认构造函数。声明带参数的构造函数后,Java 不会再额外添加该默认构造函数。
抽象类不能直接实例化,因为它可能将某些方法留给子类实现。你可以实例化一个实现了这些方法的具体子类。
对象如何保存状态并使用实例方法
每个对象都有自己的实例字段值。例如,两个 Car 对象可以分别保存不同的车型和颜色,但都使用 Car 中定义的同一个 display() 方法。调用实例方法时,方法会操作所引用的那个具体对象;在 car.display() 中,方法读取的就是该汽车对象的字段。创建另一个对象会得到另一组实例状态,不会改变第一个对象的值。
Java 中实例化与初始化的区别
实例化是创建对象;初始化是为对象建立初始状态。两者有关联,但含义不同:作为对象创建过程的一部分,Java 会将实例字段初始化为默认值;随后,字段初始化器和构造函数可以为字段设置更有用的值。之后的赋值也可以改变对象状态。
在示例中,new Car(...) 是实例化表达式,而 Car 构造函数会设置初始的 model 和 color 值。构造函数是初始化对象的一种方式,但这并不意味着“实例化”和“初始化”可以互换使用。