class和instance
在面向对象编程(OOP)中,class
和instance
是两个核心概念,它们共同构成了对象模型的基础。理解这两个概念对于掌握OOP至关重要。
首先,class
可以被视为创建对象的蓝图或模板。它定义了一类对象的属性(也称为字段或变量)和方法(函数或行为)。class
本身并不是一个具体的实体,而是提供了创建具体对象的指南。在Java代码中,class
通过关键字class
来定义,如示例中的Book
类。
// 定义一个类
class Book {
// 属性和方法
}
另一方面,instance
是指根据class
创建的具体对象。每个instance
都是其class
的一个具体表现,拥有独立的属性值(即状态)和可以执行的方法。在Java中,通过使用new
关键字来创建一个类的实例。例如,根据Book
类,我们可以创建多个书籍实例,每个实例都有其独特的属性值,如书名、作者等。
// 创建一个类的实例
Book book1 = new Book();
Book book2 = new Book();
Book book3 = new Book();
每个instance
都是class
的一个实例,这意味着它们都属于同一个类,共享相同的方法,但它们的属性值可以不同。这种设计允许我们创建多个具有相似特征和行为的对象,同时保持每个对象的独立性和个性化。
操作示例
现在我们定义一个Person
类,用来简单描述一个人:
public class Person {
public String name; // 定义一个名为name的字段,类型为String
public int age; // 定义一个名为age的字段,类型为int
}
在这个Person
类中,我们定义了两个公共(public
)字段:name
和age
。public
关键字表示这些字段可以被任何其他类访问,这是Java中的一种访问修饰符。字段是用来存储对象状态的变量,它们是类的组成部分。
创建类的实例是通过new
关键字完成的。以下是如何根据Person
类创建两个不同的实例,并分别通过变量ming
和hong
指向它们。
Person ming = new Person(); // 创建一个Person类型的实例,并将其引用赋给变量ming
Person hong = new Person(); // 创建另一个Person类型的实例,并将其引用赋给变量hong
每个实例都是独立的,并且拥有自己的name
和age
字段。我们可以通过引用变量来访问和修改这些字段的值。
通过引用变量,我们可以对实例的字段进行操作。例如:
ming.name = "Xiao Ming"; // 给ming实例的name字段赋值
ming.age = 12; // 给ming实例的age字段赋值
System.out.println(ming.name); // 输出ming实例的name字段的值
hong.name = "Xiao Hong"; // 给hong实例的name字段赋值
hong.age = 15; // 给hong实例的age字段赋值
它们在内存中的结构如下:
两个instance
拥有class
定义的name
和age
字段,且各自都有一份独立的数据,互不干扰。