1. 从现实世界到代码世界:类与对象的本质映射
当我在十多年前第一次接触面向对象编程时,导师在黑板上画了一个简单的类比:把"汽车"看作类,把"我的那辆红色丰田"看作对象。这个例子虽然老套,但确实道破了面向对象设计的精髓——用代码模拟现实世界的组织方式。类(Class)就是蓝图或模具,而对象(Object)则是根据这个蓝图制造出来的具体实例。
想象你是一个汽车设计师。在设计阶段,你会定义一辆车应该有哪些属性(颜色、排量、型号)和行为(加速、刹车、转向)。这些抽象定义就是"类"。当工厂根据你的设计图纸生产出成千上万辆具体汽车时,每一辆都是独特的"对象",它们有相同的功能结构,但各自拥有不同的属性值(比如车牌号、里程数)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 类的三大支柱:封装、继承与多态
2.1 封装:保护与控制的艺术
封装就像给你的数据装上"保险箱"。在我早期的一个电商项目中,曾因直接暴露用户余额属性导致被恶意篡改。正确的做法应该是:
java复制public class User {
private double balance; // 私有属性
// 公开的访问方法
public double getBalance() {
return this.balance;
}
// 带验证的修改方法
public void setBalance(double amount) {
if(amount >= 0) {
this.balance = amount;
}
}
}
经验之谈:所有成员变量都应该默认私有(private),然后按需提供getter/setter。这看似繁琐,但能避免90%的属性误用问题。
2.2 继承:代码复用的双刃剑
继承关系就像生物分类系统。我曾用以下结构管理动物园动物:
code复制Animal
├── Mammal
│ ├── Lion
│ └── Dolphin
└── Bird
├── Penguin
└── Eagle
但过度继承会导致"脆弱的基类问题"——修改父类可能意外破坏所有子类。我的教训是:
- 继承层次不超过3层
