Java 继承入门实战:用动物世界理解面向对象核心
·
在 Java 面向对象编程中,继承是最核心的特性之一,它能帮我们实现代码复用、简化类的设计,还能清晰描述现实世界中事物的层级关系。
以「动物世界」为案例,一步步抽象对象、提取属性行为、构建继承关系,彻底搞懂 Java 继承的用法和核心思想。这个案例包含动物(父类)、老鼠(子类)、熊猫(子类)。
一、需求分析与抽象设计
在写代码前,我们先按照面向对象的思想,把问题拆解清楚:
- 对象抽象:父类
Animal(动物),子类Mouse(老鼠)、Panda(熊猫) - 属性抽象:所有动物都有
名字(name)、食物(food) - 行为抽象:
- 父类通用行为:
吃(eat)、睡觉(sleep) - 子类特有行为:老鼠额外拥有
打洞(digHole)
- 父类通用行为:
- 继承关系:
Mouse和Panda继承Animal,直接复用父类的属性和方法,无需重复编写
二、核心知识点:Java 继承基础
1. 什么是继承?
继承就是子类(派生类)继承父类(基类)的属性和方法,子类可以直接使用父类的非私有成员,还能扩展自己的特有属性和方法。
2. 继承语法
// 子类 extends 父类
public class 子类名 extends 父类名 {
// 子类特有属性 + 方法
}
3. 继承核心特点
- 代码复用:父类的通用代码写一次,所有子类都能使用
- 扩展性:子类可以重写父类方法,也能添加自己的特有方法
- 单继承:Java 中一个子类只能继承一个父类(避免多继承冲突)
三、代码实现
1. 父类:Animal(动物)
作为所有动物的父类,封装通用属性name、food,通用方法eat()、sleep()。
/**
* 动物父类
*/
public class Animal {
// 公共属性:名字、食物
protected String name;
protected String food;
// 构造方法:初始化属性
public Animal(String name, String food) {
this.name = name;
this.food = food;
}
// 吃的行为
public void eat() {
System.out.println(name + " 正在吃 " + food);
}
// 睡觉的行为
public void sleep() {
System.out.println(name + " 正在睡觉");
}
// getter/setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
✅ 关键点:使用protected修饰属性,子类可以直接访问,比private更适合继承场景。
2. 子类:Mouse(老鼠)
继承Animal,复用父类属性和方法,扩展特有方法digHole()(打洞)。
/**
* 老鼠类:继承动物类
*/
public class Mouse extends Animal {
// 构造方法:调用父类构造方法初始化属性
public Mouse(String name, String food) {
super(name, food);
}
// 特有行为:打洞
public void digHole() {
System.out.println(name + " 正在打洞!");
}
}
✅ 关键点:
super(参数):调用父类构造方法,必须写在子类构造方法第一行- 直接复用父类
eat()、sleep(),无需重复编写
3. 子类:Panda(熊猫)
继承Animal,纯复用父类功能,无额外扩展(演示基础继承)。
/**
* 熊猫类:继承动物类
*/
public class Panda extends Animal {
// 构造方法
public Panda(String name, String food) {
super(name, food);
}
}
4. 测试类:TestAnimal
创建对象,调用方法,验证继承效果。
public class TestAnimal {
public static void main(String[] args) {
// 创建老鼠对象
Mouse mouse = new Mouse("小老鼠", "谷物");
mouse.eat(); // 继承父类方法
mouse.sleep(); // 继承父类方法
mouse.digHole(); // 子类特有方法
System.out.println("------------------------");
// 创建熊猫对象
Panda panda = new Panda("大熊猫", "竹子");
panda.eat(); // 继承父类方法
panda.sleep(); // 继承父类方法
}
}
运行结果
小老鼠 正在吃 谷物
小老鼠 正在睡觉
小老鼠 正在打洞!
------------------------
大熊猫 正在吃 竹子
大熊猫 正在睡觉
四、案例核心知识点总结
1. 继承的好处
- 代码复用:父类写一次
eat()、sleep(),所有子类都能使用,减少冗余代码 - 结构清晰:完美模拟现实世界的层级关系(动物→老鼠 / 熊猫)
- 易于扩展:新增子类只需继承父类,新增通用功能只需修改父类
2. 关键语法
- 继承关键字:
extends - 调用父类构造:
super() - 访问权限:
protected(父类子类同包可用,适合继承) - 方法复用:子类直接调用父类非私有方法
3. 注意事项
- Java 只支持单继承,一个子类不能同时继承多个父类
- 子类不能继承父类的
private属性和方法 - 子类可以重写父类方法(覆盖),实现自己的逻辑
更多推荐
所有评论(0)