第 14 章:类的定义与对象创建
学习目标
- 掌握类的完整定义语法
- 理解对象的创建过程和内存模型
- 区分成员变量和局部变量
一、类的完整定义
java
/**
* 学生类(文档注释)
*
* @author taskflow
* @since 1.0.0
*/
public class Student { // ① public class,类名 UpperCamelCase
// ============ 字段(成员变量)============
public String name; // ② 字段
private int age; // ③ private 封装字段
// ============ 构造器 ============
public Student() { // ④ 无参构造器
System.out.println("无参构造器");
}
public Student(String name, int age) { // ⑤ 有参构造器(重载)
this.name = name;
this.age = age;
}
// ============ 方法 ============
public void printInfo() { // ⑥ 实例方法
System.out.println("姓名: " + name + ", 年龄: " + age);
}
public int getAge() { // ⑦ getter
return age;
}
public void setAge(int age) { // ⑧ setter
if (age < 0 || age > 150) {
throw new IllegalArgumentException("年龄不合法");
}
this.age = age;
}
}二、对象的创建过程
2.1 new 关键字做了什么?
java
Student s = new Student("张三", 18);2.2 内存模型
三、成员变量 vs 局部变量
| 维度 | 成员变量 | 局部变量 |
|---|---|---|
| 声明位置 | 类体内 | 方法 / 代码块内 |
| 默认值 | 有 | 无(必须初始化) |
| 内存位置 | 堆(对象) | 栈 |
| 作用域 | 整个类 | 方法 / 块内 |
| 生命周期 | 对象存在期间 | 方法执行期间 |
java
class User {
String name; // ① 成员变量:有默认值 null
int age; // ② 成员变量:有默认值 0
public void register(String username) { // ③ username 是参数(局部变量)
String password = "123456"; // ④ 局部变量:必须初始化
int retryCount = 0; // ⑤ 局部变量
if (username != null) {
String message = "注册成功"; // ⑥ 块局部变量:只在 if 内可见
System.out.println(message);
}
// System.out.println(message); // ❌ 块外不可访问
}
}四、对象数组
java
Student[] students = new Student[3]; // ① 创建 3 个 null 引用
students[0] = new Student("张三", 18);
students[1] = new Student("李四", 20);
students[2] = new Student("王五", 22);
for (Student s : students) {
s.printInfo();
}⚠️
new Student[3]只是创建了 3 个null引用,还没有 Student 对象!
五、本章小结
| 要点 | 关键 |
|---|---|
| 类定义 | class 关键字,包含字段、构造器、方法 |
| 对象创建 | new 关键字,分配堆内存 |
| 内存模型 | 引用在栈,对象在堆 |
| 成员变量 | 在类内,有默认值 |
| 局部变量 | 在方法内,必须初始化 |
动手练习
练习 1:基础题
定义一个 Car 类,包含字段 brand、color、speed,方法 accelerate()、brake()、printInfo()。
练习 2:进阶题
创建一个 Car 对象数组,模拟车队:
java
Car[] garage = { new Car("Toyota", "Red"), new Car("BMW", "Black") };下一章:第 15 章:构造器与 this 关键字 →