1. 概述
在本快速教程中,我们将了解 Java 编程语言的两个基本构建块 – 类和对象。 它们是面向对象编程 (OOP) 的基本概念,我们使用它们来模拟现实生活中的实体。
在 OOP 中,类是对象的蓝图或模板。 我们使用它们来描述实体类型。
另一方面,对象是从类创建的活动实体。 它们在其字段中包含某些状态,并通过其方法呈现某些行为。
2. 类
简单地说,类代表一个定义或对象类型。 在 Java 中,类可以包含字段、构造函数和方法。
让我们看一个使用一个简单的 Java 类表示汽车的例子
class Car {
// fields
String type;
String model;
String color;
int speed;
// constructor
Car(String type, String model, String color) {
this.type = type;
this.model = model;
this.color = color;
}
// methods
int increaseSpeed(int increment) {
this.speed = this.speed + increment;
return this.speed;
}
// ...
}
这个 Java 类代表一辆通用的汽车。 我们可以从这个类创建任何类型的汽车。 我们使用字段来保存状态,并使用构造函数从这个类创建对象。
每个 Java 类默认都有一个空构造函数。 如果我们没有提供特定的实现,就像上面那样,我们就使用它。 这是汽车类的默认构造函数的样子
Car(){}
这个构造函数只是将对象的全部字段初始化为它们的默认值。 字符串初始化为null,整数初始化为零。
现在,我们的类有一个特定的构造函数,因为我们希望我们的对象在创建时定义它们的字段
Car(String type, String model) {
// ...
}
总而言之,我们编写了一个类来定义一辆汽车。 它的属性由字段描述,字段包含类的对象的各种状态,它的行为使用方法来描述。
3. 对象
类在编译时被翻译,而对象是在运行时从类创建的。
类的对象称为实例,我们使用构造函数创建和初始化它们
Car focus = new Car("Ford", "Focus", "red");
Car auris = new Car("Toyota", "Auris", "blue");
Car golf = new Car("Volkswagen", "Golf", "green");
现在,我们从单个类创建了不同的汽车对象。 这才是重点,在一个地方定义蓝图,然后在很多地方多次重复使用它。
到目前为止,我们有三个汽车对象,它们都停着,因为它们的速度为零。 我们可以通过调用我们的increaseSpeed方法来改变这一点
focus.increaseSpeed(10);
auris.increaseSpeed(20);
golf.increaseSpeed(30);
现在,我们改变了汽车的状态 – 它们都以不同的速度行驶。
此外,我们可以并且应该定义对类、其构造函数、字段和方法的访问控制。 我们可以使用访问修饰符来做到这一点,正如我们将在下一节中看到的。
4. 访问修饰符
在前面的例子中,我们省略了访问修饰符以简化代码。 通过这样做,我们实际上使用了默认的包私有修饰符。 该修饰符允许从同一包中的任何其他类访问该类。
通常,我们会对构造函数使用public修饰符,以允许来自所有其他对象的访问
public Car(String type, String model, String color) {
// ...
}
我们类中的每个字段和方法都应该使用特定的修饰符定义访问控制。 类通常具有public修饰符,但我们倾向于将我们的字段保持private。
字段保存对象的状态,因此我们希望控制对该状态的访问。 我们可以将其中一些保持private,另一些保持public。 我们使用称为 getter 和 setter 的特定方法来实现这一点。
让我们看看带有完全指定的访问控制的类
public class Car {
private String type;
// ...
public Car(String type, String model, String color) {
// ...
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSpeed() {
return speed;
}
// ...
}
我们的类标记为 public,这意味着我们可以在任何包中使用它。 此外,构造函数是public,这意味着我们可以在任何其他对象内部从这个类创建对象。
我们的字段被标记为 private,这意味着它们不能直接从我们的对象访问,但我们通过 getter 和 setter 提供对它们的访问。
type 和 model 字段没有 getter 和 setter,因为它们保存着我们对象的内部数据。我们只能在初始化期间通过构造函数定义它们。
此外,color 可以被访问和修改,而 speed 只能被访问,不能被修改。我们通过专门的 public 方法 increaseSpeed() 和 decreaseSpeed() 来强制执行速度调整。
换句话说,我们使用访问控制来封装对象的状态。
5. 结论
在本文中,我们回顾了 Java 语言的两个基本元素:类和对象,并展示了它们的使用方式和原因。我们还介绍了访问控制的基础知识并演示了其用法。
为了学习 Java 语言的其他概念,我们建议阅读关于 继承、super 关键字和 抽象类 作为下一步。
支持本文的代码可在 GitHub 上获取。 一旦你以 Baeldung Pro 会员 身份登录,就开始学习并在项目上进行编码。















