Java 是一种面向对象的编程语言。面向对象方法的核心思想是将复杂问题分解为更小的对象。
对象 是任何具有状态(state)和行为(behavior)的实体。例如,一辆自行车就是一个对象:
- 状态:空闲、一档、二档等
- 行为:刹车、加速等
在学习对象之前,我们先来了解 Java 中的 类(Class)。
Java 类
类 是对象的蓝图(模板)。在创建对象之前,我们首先需要定义类。
可以把类想象成一栋房子的设计图纸。图纸中包含了关于楼层、门、窗等所有细节。根据这些描述,我们可以建造出实际的房子 —— 这个房子就是对象。
由于可以依据同一份图纸建造多栋房子,因此我们可以从一个类创建多个对象。
在 Java 中创建类
在 Java 中,我们可以使用 class 关键字来定义一个类。例如:
class ClassName {
// 字段(成员变量)
// 方法
}
- 字段(fields):用于存储数据(也称为成员变量)
- 方法(methods):用于执行某些操作
以自行车为例,我们可以这样定义它的类:
class Bicycle {
// 状态(字段)
private int gear = 5;
// 行为(方法)
public void braking() {
System.out.println("刹车功能正在工作");
}
}
在上面的例子中,我们创建了一个名为 Bicycle 的类,它包含一个字段 gear 和一个方法 braking()。
注意:我们使用了关键字
private和public,它们被称为 访问修饰符(access modifiers)。更多内容请参阅 Java 访问修饰符。
Java 对象
对象 是类的一个实例(instance)。例如,如果 Bicycle 是一个类,那么山地自行车(MountainBicycle)、运动自行车(SportsBicycle)、旅行自行车(TouringBicycle)等都可以被视为该类的对象。
在 Java 中创建对象
创建对象的语法如下:
ClassName object = new ClassName();
例如,对于 Bicycle 类:
Bicycle sportsBicycle = new Bicycle();
Bicycle touringBicycle = new Bicycle();
这里我们使用了 new 关键字以及类的 构造函数(constructor) 来创建对象。构造函数类似于方法,其名称与类名相同(如 Bicycle() 就是 Bicycle 类的构造函数)。更多内容请参阅 Java 构造函数。
sportsBicycle 和 touringBicycle 是对象的名称,我们可以用它们来访问类中的字段和方法。
注意:一个类的字段和方法也统称为该类的 成员(members)。
访问类的成员
我们可以使用对象名称配合点运算符 . 来访问类的成员。例如:
class Bicycle {
// 类的字段
int gear = 5;
// 类的方法
void braking() {
// ...
}
}
// 创建对象
Bicycle sportsBicycle = new Bicycle();
// 访问字段和方法
sportsBicycle.gear; // 访问字段 gear
sportsBicycle.braking(); // 调用方法 braking()
在这个例子中,我们创建了名为 sportsBicycle 的 Bicycle 对象,并通过它访问了字段和方法。
示例:Java 类与对象
class Lamp {
// 存储灯的状态
// true 表示灯亮,false 表示灯灭
boolean isOn;
// 打开灯的方法
void turnOn() {
isOn = true;
System.out.println("灯亮了吗?" + isOn);
}
// 关闭灯的方法
void turnOff() {
isOn = false;
System.out.println("灯亮了吗?" + isOn);
}
}
public class Main {
public static void main(String[] args) {
// 创建两个 Lamp 对象:led 和 halogen
Lamp led = new Lamp();
Lamp halogen = new Lamp();
// 调用方法打开 led 灯
led.turnOn();
// 调用方法关闭 halogen 灯
halogen.turnOff();
}
}
输出:
灯亮了吗?true
灯亮了吗?false
在上面的程序中,我们定义了一个名为 Lamp 的类,它包含一个变量 isOn 以及两个方法 turnOn() 和 turnOff()。
在 Main 类中,我们创建了两个 Lamp 对象:led 和 halogen,并分别调用了它们的方法。
led.turnOn():将isOn设为true并打印结果halogen.turnOff():将isOn设为false并打印结果
isOn 是一个 实例变量(instance variable),因为每个对象(实例)都会拥有自己独立的一份副本。也就是说,led 和 halogen 各自拥有自己的 isOn 变量。
示例:在同一个类中创建对象
在前面的例子中,我们在另一个类(Main)中创建了对象。其实,我们也可以在同一个类中创建对象:
class Lamp {
boolean isOn;
void turnOn() {
isOn = true;
System.out.println("灯亮了吗?" + isOn);
}
public static void main(String[] args) {
// 在同一个类中创建 Lamp 对象
Lamp led = new Lamp();
// 通过对象调用方法
led.turnOn();
}
}
输出:
灯亮了吗?true
这里我们在 main() 方法中创建了 Lamp 类自身的对象 led,并通过它调用了 turnOn() 方法。