在 Java 的世界观里,存在一个核心哲学:"万物皆对象"。这表明,在 Java 环境下,你可以通过对象来描述现实中的各种事物。
作为一种坚定的面向对象编程语言,Java 把类与对象作为其主要的结构元素。具体而言,类是对一系列对象共有属性和行为的抽象描述,就像一份蓝图或者模板,指导着对象的构造过程。需要注意的是,这里所谓的"对象",并不是日常所指的人际关系中的"对象",而是"对象"在编程语言中的概念,即某个类的具体实现实例,它们独特的特征与动作构成了它们的个性。
Java 促使程序员利用对象来反映现实世界的各类实体。随着我们深入了解,我们将从现实世界的角度去探索 Java 语言中的类与对象,理解它们如何相互协作,以表达和解决实际问题。
现实世界
类的概念
在现实世界中,我们可以将 "人类" 视为一个类,类是一个抽象的概念,描述了具有相似特征和行为的一组对象。
- 特征(属性):人类的属性可能包括姓名、年龄、性别等。
- 行为:人类的行为可能包括说话、吃饭、睡觉等。
对象的概念
在现实世界中,每个人都是人类这个类的一个实例。
- 特征(属性) :根据类中定义的属性,赋予每个具体的人不同的属性,每个人就是一个对象。例如,小明的属性包括姓名:小明、年龄:25 岁、性别:男;小红的属性包括姓名:小红、年龄:30 岁、性别:女。
- 行为:每个人可以做出的行为就是类中所定义的行为。
类和对象的关系
在这个例子中:
- 类是人类的概念,描述了所有人共有的特征和行为。
- 对象是实际的人,每个人是人类的一个具体实例,一个类可以有很多对象。
Java 中的类和对象
在 Java 中,类是用来描述对象的模板或蓝图,它定义了对象的属性和行为。通过类可以创建多个对象,这些对象共享类所定义的属性和行为。
类的实现
在给定的 Person
类中,我们描述了一个人的基本属性(姓名、年龄、性别)和一些常见行为(说话、进食、睡觉、庆祝生日)。在这段代码中:
- 属性:
name
、age
、gender
分别代表了人物的姓名、年龄和性别。这些属性被定义为私有(private),这意味着它们只能在Person
类的内部(即当前类的方法)访问。 - 构造方法:构造方法用于实例化对象时初始化对象的属性。
Person
类中的构造方法接受姓名、年龄和性别,并将其赋值给对应的属性。 - 方法:
speak
、eat
、sleep
、celebrateBirthday
,getName
、getAge
和getGender
同样被称作行为或者方法。这些方法描述了对象可以执行的动作或者返回与对象相关的信息。
java
public class Person {
// 属性
private String name; // 姓名
private int age; // 年龄
private String gender; // 性别
// 构造方法
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// 方法
public void speak() {
System.out.println(name + "说:我是一名" + gender + "生");
}
public void eat(String food) {
// 允许指定吃的食物
System.out.println(name + "正在吃" + food);
}
public void sleep() {
// 睡觉的行为
System.out.println(name + "正在睡觉");
}
/**
* 生日
*/
public void celebrateBirthday() {
this.age++; // 年龄 + 1
System.out.println(name + "过生日了,现在的年龄是:" + age);
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public String getGender() {
return this.gender;
}
}
对象的实现
在CreatePersonObjectExample
类的main
方法中,我们创建了两个Person
对象(xiaoming
和xiaohong
)。这两个对象通过调用new
关键字和Person
类的构造方法被实例化。实例化后,我们调用了各个对象的不同方法,通过这些方法模拟了这些对象的日常行为。
- 创建对象:通过
Person xiaoming = new Person("小明", 25, "男")
和Person xiaohong = new Person("小红", 30, "女")
创建了xiaoming
和xiaohong
两个对象。 - 调用对象的方法:通过
xiaoming.speak()
、xiaoming.eat("苹果")
以及xiaohong.celebrateBirthday()
等方式调用了对象的方法,模拟了对象的行为和交互。
java
public class CreatePersonObjectExample {
public static void main(String[] args) {
// 创建一个 xiaoming 对象
Person xiaoming = new Person("小明", 25, "男");
// 创建一个 xiaohong 对象
Person xiaohong = new Person("小红", 30, "女");
// 调用对象的方法
xiaoming.speak();
xiaoming.eat("苹果");
// 生日前的年龄
System.out.println(xiaohong.getName() + "今年 " + xiaohong.getAge() + "岁");
// 调用生日庆祝方法
xiaohong.celebrateBirthday();
}
}
程序运行结果:
java
小明说:我是一名男生
小明正在吃苹果
小红今年 30岁
小红过生日了,现在的年龄是:31
要运行这个程序,需要将Person.java
和CreatePersonObjectExample.java
置于同一个文件夹中。之后,只需直接运行CreatePersonObjectExample
的main
方法即可。如果在命令行中进行操作,只需要键入javac CreatePersonObjectExample.java
。此时,javac
会自动编译Person
类,因为它是CreatePersonObjectExample
所依赖的类。
这样,我们就创建了两个具体的人物实例,并且通过调用它们的方法来模拟这些人物的行为。这个示例是为了让初学者初步理解 Java 类和对象的概念。在后续的文章中,我们将深入讨论类和对象的实现细节,以及更高级的概念,这将帮助学习者更好地利用类和对象进行编程。