面向对象(OOP)是 Java 的核心思想:把数据和操作数据的方法组织成"对象",用类描述同一类对象的模板。这篇用可以运行的示例讲清三大特性。
类与对象
public class Dog {
String name;
void bark() {
System.out.println(name + ":汪汪!");
}
}
Dog d = new Dog();
d.name = "旺财";
d.bark(); // 输出:旺财:汪汪!
类是图纸,对象是按图纸造出来的实例,new 负责创建对象。
构造方法
public class Dog {
String name;
int age;
// 构造方法:与类同名、无返回值,new 的时候自动调用
public Dog(String name, int age) {
this.name = name; // this 指当前对象
this.age = age;
}
}
Dog d = new Dog("旺财", 2);
封装:private + 方法访问
把字段设为 private,外界只能通过公共方法读写,校验逻辑就有了安放之处:
public class BankAccount {
private double balance; // 余额只能通过方法修改
public void deposit(double amount) {
if (amount <= 0) {
System.out.println("存款金额必须大于 0");
return;
}
balance += amount;
}
public double getBalance() {
return balance;
}
}
外界无法直接改 balance,只能走 deposit(),数据就安全了。
继承:extends
public class Animal {
public void eat() {
System.out.println("吃东西");
}
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("小猫吃鱼");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("小狗啃骨头");
}
}
子类自动获得父类的成员,并用 @Override 重写父类方法,提供自己的实现。
多态:同一个调用,不同表现
Animal[] zoo = { new Cat(), new Dog() };
for (Animal animal : zoo) {
animal.eat();
}
// 输出:
// 小猫吃鱼
// 小狗啃骨头
变量类型都是 Animal,但运行时调用的是各自子类的实现——调用哪个版本由对象的实际类型决定,这就是多态。
Animal a = new Cat(); // 父类引用指向子类对象
a.eat(); // 小猫吃鱼
小结
- 类是模板,对象是实例,
new创建对象,构造方法完成初始化 - 封装:
private隐藏字段,公共方法控制访问并加校验 - 继承:
extends复用父类代码,@Override重写方法 - 多态:父类引用指向子类对象,运行时决定行为
面向对象是读懂 Java 框架源码的前提,建议把示例亲手敲一遍加深理解。

评论 0
还没有评论,来抢沙发吧~ 🛋