Instantiation in Java

2025年5月7日 | 阅读 5 分钟

实例化是 Java 编程中一个描述通用且直接概念的巨大词汇,即创建 对象 的新实例以供程序使用。

这个过程分配内存给新对象并对其进行初始化,以便可以使用它们,这是让类“活起来”的关键。Java 中的 new 关键字通常用于实例化,因为它根据类定义构建一个对象并返回它的引用。有效的 Java 编程需要理解类实例化和几种创建类的实例或对象的技术。

在本节中,我们将讨论Java 中的实例化是什么,如何实例化一个类,以及如何创建类的实例或对象

Instantiation in Java

实例化

Java 中,实例化意味着调用一个类的 构造函数,该构造函数创建一个该类类型的实例对象。换句话说,创建类的对象称为实例化。它为对象分配初始内存并返回一个引用。Java 中的对象实例化为类提供了蓝图。

什么是对象?

Java 对象是运行时实体,包含由其类指定的属性和行为。包含类的蓝图,它充当类的实例。在面向对象编程中,对象是重要的构建块,允许我们创建和使用用户定义的数据结构,如 List、Vector。

  • 它是运行时实体。
  • 它包含类的蓝图。
  • 我们可以为类创建任意数量的对象
  • 它可能代表用户定义的数据,如 Vector、List 等。

实例化语法

或者,

让我们通过一个例子来理解上面的陈述。

创建实例

创建实例的以下两种方法:

使用 new 关键字

Java 中的 new 关键字是创建类实例最常见和最直接的方法。当我们使用 new 关键字时,它会为新对象分配内存并调用类的构造函数来初始化该对象。

定义引用

实例化

如果我们定义一个引用变量,我们也可以这样实例化上面的类。

我们观察到,当我们使用 new 关键字后跟类名时,它会创建一个该类的实例或对象。创建类的构造函数也被称为实例化

Dog.java

注意:如果我们想调用局部内部类的方法,我们必须实例化该类。

使用静态工厂方法

实例化类的另一种方法是调用一个 静态 工厂方法。一个类可以提供一个公共静态工厂方法,它只不过是一个返回该类实例的静态方法。请始终记住,这与工厂方法设计模式不同。

我们可以使用它代替构造函数。提供静态工厂方法而不是构造函数有优点和缺点。第一个优点是静态工厂方法也有名称,不像构造函数。第二个优点是与构造函数不同,它们不需要在每次调用时都创建一个新对象。第三个优点是与构造函数不同,它们可以返回其返回类型的任何子类型的对象。第四个优点是它们减少了创建参数化类型实例的冗长性。

缺点是,只提供静态工厂方法会导致没有公共或受保护构造函数的类无法被子类化。另一个缺点是它们不容易与其他静态方法区分开来。

让我们看一个静态工厂方法的例子。

让我们看一些可能出现在脑海中的重要问题。

我们可以实例化抽象类吗?

不,我们不能实例化抽象类。抽象类旨在作为基类,定义共同的属性和方法,包括没有实现的抽象方法。这些抽象方法必须由扩展抽象类的任何子类实现,以确保子类为其提供特定的行为。

然而,虽然我们不能直接创建抽象类的实例,但我们可以创建其子类的实例。当一个抽象类被子类化时,子类通常会为父抽象类中声明的所有抽象方法提供具体的实现。如果子类没有实现所有抽象方法,它本身也必须被声明为抽象。

实例化和初始化之间有什么区别?

在 Java 编程中,实例化和初始化是完全不同的概念。

实例化

实例化是使用 new 关键字从类创建对象的过程。它为新对象分配内存并返回该内存位置的引用。

示例

初始化

初始化是将初始值分配给对象字段或变量的过程。它使用指定的值设置对象或变量的初始状态。

示例

在这个例子中,cost = 100 使用值 100 初始化变量 cost。类似地,new Car("Red", "Toyota") 不仅实例化了 Car 对象,还用 "Red" 作为颜色和 "Toyota" 作为模型对其进行了初始化。

结论

虽然 Java 编程中的初始化为变量或对象字段设置初始值,但实例化涉及使用 new 关键字从类生成对象、分配内存并返回引用。

尽管它们经常一起发生,但这些概念具有不同的功能:初始化设置对象的初始状态,而实例化证明了对象的存在。理解这种区别对于有效地处理 Java 程序中的对象创建和状态设置至关重要,可以确保代码执行的清晰度和准确性。