类与对象
相关主线:面对对象的程序与设计(基础入门)、封装、子类与继承
基本概念
- 类 (Class):对一组具有相同属性和行为的对象的抽象描述,是创建对象的模板。
- 对象 (Object):类的具体实例,具有状态(属性)和行为(方法)。
- 类使用
class关键字定义,对象通过new关键字创建。
类的定义
- 语法格式:
[修饰符] class 类名 { // 属性(成员变量) // 构造方法 // 方法 } - 属性:描述对象的状态,也称为成员变量、字段(field)。
- 方法:描述对象的行为。
成员变量
- 定义在类内部、方法外部的变量。
- 可以是基本数据类型或引用类型。
- 默认初始化值:
- 数值类型(int, double 等):0 或 0.0
- boolean:false
- char:‘\u0000’
- 引用类型:null
方法
- 定义类中的行为,语法:
[修饰符] 返回类型 方法名(参数列表) { // 方法体 return 返回值; // 如果返回类型为 void,可省略 } void表示无返回值。- 方法可以重载(Overloading):同一类中方法名相同但参数列表不同。
构造方法
- 特殊方法,用于初始化新创建的对象。
- 名称必须与类名完全相同,没有返回类型(甚至不能写
void)。 - 如果没有显式定义构造方法,编译器会自动提供一个无参构造方法(默认构造方法)。
- 可以重载,提供不同的初始化方式。
示例:
public class Student {
String name;
int age;
// 无参构造
public Student() {
}
// 有参构造
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}创建对象
- 使用
new关键字 + 构造方法:类名 对象名 = new 类名(参数); - 创建对象的过程:
- 在堆内存中分配空间。
- 初始化成员变量(默认值或显式初始值)。
- 执行构造方法中的代码。
- 返回对象的引用(地址)赋值给变量。
对象的使用
- 通过
.运算符访问对象的属性和方法:Student s = new Student("张三", 19); System.out.println(s.name); // 访问属性 s.study(); // 调用方法
引用与对象
- 引用类型变量存储的是对象的地址(引用),而不是对象本身。
- 基本类型变量直接存储值。
- 多个引用可以指向同一个对象,通过其中一个引用修改对象状态会影响所有引用。
- 当没有任何引用指向一个对象时,该对象成为垃圾,由 JVM 的垃圾回收器回收(GC)。
局部变量 vs 成员变量
| 对比项 | 成员变量 | 局部变量 |
|---|---|---|
| 定义位置 | 类内、方法外 | 方法内、代码块内、参数列表 |
| 生命周期 | 随对象创建而存在,对象销毁而消失 | 随方法调用而存在,方法结束而消失 |
| 默认值 | 有(如 0, null 等) | 无,必须显式初始化 |
| 修饰符 | 可以有权限修饰符(public, private 等) | 不能有权限修饰符 |
this 关键字
this:当前**对象(类)**的引用。- 常见用途:
- 区分成员变量与局部变量(如
this.name = name)。左为成员,右为局部 - 调用当前类的其他构造方法:
this(参数)(必须放在构造方法第一行)。 - 返回当前对象:
return this。
- 区分成员变量与局部变量(如
常见设计原则
- 高内聚、低耦合:类的职责明确,对外暴露最小接口。
- 封装:使用
private隐藏内部细节,通过public的 getter/setter 访问私有属性。详见封装。 - 构造方法应保证对象创建后处于合法状态。