类中成员变量描述对象“有什么”,成员方法描述对象“能做什么”;变量需private封装并配getter/setter,方法应操作自身变量以体现面向对象思想。

类中的成员变量和成员方法共同构成了对象的属性与行为。成员变量描述对象“有什么”,即状态;成员方法描述对象“能做什么”,即行为。定义时需明确封装意图,合理设置访问权限,并让方法操作自身变量,才能真实体现面向对象的设计思想。
用成员变量定义对象的属性
成员变量(也称字段或实例变量)在类内部声明,属于对象独有,每个实例有一份独立副本。它们直接刻画对象的状态特征。
- 声明时通常使用 private 修饰,避免外部直接修改,保证数据安全
- 配合 public 的 getter/setter 方法提供可控访问,例如:getName() 和 setName(String name)
- 可在声明时初始化,也可在构造方法中赋值,确保对象创建后状态有效
- 避免使用 public 变量——这会破坏封装,使属性变更无法被追踪或约束
用成员方法定义对象的行为
成员方法是定义在类中、用于操作本类成员变量的函数。它们体现对象的能力,且天然可访问当前对象的全部成员变量(包括 private 变量)。
- 方法体中通过 this(可省略)引用当前对象的变量,例如 this.age++ 表示给当前对象年龄加1
- 行为应围绕对象职责设计,比如 Car 类有 start()、brake(),而不是写一个通用的 printInfo() 就完事
- 方法名建议动词开头,清晰表达动作意图;返回值和参数要贴合业务逻辑,不强行暴露内部结构
属性与行为协同工作的关键点
真正有意义的对象,是属性和行为相互配合的结果。方法不只是“能调用”,更要“有意义地操作属性”。
- setter 方法不只是赋值,还可加入校验逻辑,如设置年龄时拒绝负数:if (age
- 行为方法常依赖多个属性联合判断,例如 isAdult() 基于 age 计算,drive() 可能同时检查 isStarted 和 fuelLevel > 0
- 避免方法中大量使用其他对象的 public 变量——这说明职责划分不清,应考虑将逻辑移到对应类中
一个小例子:Person 类的典型写法
以下代码展示了属性与行为如何自然结合:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = Math.max(0, age); // 构造时就做基础校验
}
public void celebrateBirthday() {
this.age++; // 行为直接改变自身状态
}
public boolean isAdult() {
return this.age >= 18; // 行为基于属性计算结果
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
创建对象后,Person p = new Person("小明", 17);,调用 p.celebrateBirthday() 会真实改变它的 age,再调用 p.isAdult() 就返回 true——这就是属性与行为联动的实质。










