extends
关键字,定义语法:class 子类名 extends 父类名 { ... }
,子类自动继承父类的非私有属性和方法,并可添加新成员或重写父类方法。在Java中创建子类是面向对象编程的核心概念之一,通过继承(Inheritance)实现代码复用和逻辑分层,以下是详细步骤和关键要点:
子类创建基础
语法结构:
class 子类名 extends 父类名 { // 新增属性或方法 // 重写父类方法(可选) }
示例:
// 父类 class Animal { void eat() { System.out.println("动物进食"); } } // 子类 class Dog extends Animal { // 通过extends继承 void bark() { System.out.println("狗叫:汪汪!"); } }
关键操作详解
-
方法重写(Override)
子类可修改父类方法的行为:class Dog extends Animal { @Override // 注解表示重写(推荐添加) void eat() { System.out.println("狗啃骨头"); } }
-
使用
super
关键字
访问父类成员或构造函数:class Dog extends Animal { @Override void eat() { super.eat(); // 先调用父类的eat() System.out.println("追加狗粮"); } }
-
构造函数链
子类构造函数默认调用父类无参构造,若父类无无参构造,需显式调用:class Animal { Animal(String name) { /*...*/ } // 父类有参构造 } class Dog extends Animal { Dog() { super("未知品种"); // 必须显式调用父类构造 } }
完整示例
// 父类 class Vehicle { void run() { System.out.println("交通工具运行中"); } } // 子类 class Car extends Vehicle { private String model; Car(String model) { this.model = model; } @Override void run() { System.out.println(model + "汽车启动"); } void honk() { System.out.println("嘀嘀!"); } } // 测试类 public class Main { public static void main(String[] args) { Car myCar = new Car("Toyota"); myCar.run(); // 输出:Toyota汽车启动(重写方法) myCar.honk(); // 输出:嘀嘀!(子类新增方法) } }
继承规则与注意事项
-
单继承限制
Java不支持多继承(一个子类只能extends
一个父类),但可通过接口(implements
)实现多能力扩展。 -
访问权限
- 子类可访问父类的
public
和protected
成员 - 父类
private
成员对子类不可见(需通过getter/setter访问)
- 子类可访问父类的
-
继承层次
支持多层继承(如A→B→C
),但需避免过度设计导致维护困难。 -
final
类限制
若父类被声明为final
(如final class Parent
),则无法被继承。
为什么使用子类?
- 代码复用:共享父类属性和方法
- 多态支持:父类引用指向子类对象(如
Vehicle v = new Car()
) - 逻辑扩展:在不修改父类的前提下新增功能
:创建子类需通过
extends
关键字,重点掌握方法重写、super
调用和构造链规则,合理使用继承能提升代码可维护性,但需遵循”is-a”关系(如Dog is an Animal)确保设计合理。
引用说明参考Oracle官方Java教程(Inheritance)及《Java核心技术卷I》第5章,代码示例为原创实践。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/42565.html