Java通过extends关键字实现类继承,子类可复用父类非私有成员并扩展功能;使用@Override注解进行方法重写以定制行为,通过super调用父类方法或构造器,实现代码复用与多态,提升可维护性和扩展性,同时应遵循组合优于继承原则避免过度耦合。

在Java中,类的继承是面向对象编程(OOP)的核心特性之一,它允许一个类复用另一个类的属性和方法,从而提升代码的可维护性和扩展性。通过extends关键字实现继承,子类可以继承父类的非私有成员,并在此基础上进行功能扩展或行为修改。
如何实现类的继承
Java使用extends关键字让一个类继承另一个类。被继承的类称为父类(或超类),继承的类称为子类。
例如,定义一个父类Animal:
class Animal { protected String name; public Animal(String name) { this.name = name; } public void eat() { System.out.println(name + " 正在吃东西"); } }
子类Dog继承Animal:
立即学习“Java免费学习笔记(深入)”;
class Dog extends Animal { public Dog(String name) { super(name); // 调用父类构造方法 } public void bark() { System.out.println(name + " 在汪汪叫"); } }
此时,Dog类不仅拥有自己的bark()方法,还能直接使用eat()方法。
方法重写实现行为定制
子类可以通过方法重写(Override)改变从父类继承来的方法行为。需使用@Override注解明确意图,并确保方法名、参数列表和返回类型一致。
例如,让Dog类重写eat()方法:
@Override public void eat() { System.out.println(name + " 用嘴啃骨头吃饭"); }
这样调用dog.eat()时,执行的是子类版本,实现多态。
利用super调用父类功能
在重写方法时,若仍需使用父类原有逻辑,可用super关键字调用父类方法。
比如在增强版的eat()中先执行父类逻辑:
@Override public void eat() { super.eat(); // 先执行父类的eat() System.out.println(name + " 吃得非常开心!"); }
super也可用于调用父类构造方法,如super(name),这在子类构造器中很常见。
继承带来的方法复用优势
继承最直接的好处是减少重复代码。多个子类共享父类通用行为,比如Cat、Bird都可以继承Animal并复用eat()或sleep()方法。
同时,结合多态,程序可以统一处理不同子类对象:
Animal a1 = new Dog("旺财"); Animal a2 = new Cat("咪咪"); a1.eat(); // 自动调用对应子类方法 a2.eat();
这种设计提升了灵活性和可扩展性。
基本上就这些。掌握extends、super、@Override和构造器调用规则,就能有效实现Java中的类继承与方法复用。注意避免过度继承,优先考虑组合优于继承的原则,保持系统简洁。


