Java继承通过extends实现“is-a”关系,复用父类非私有成员并支持重写与扩展;单继承但可多层传递,需用super()调用父类构造器;private成员不可直接访问,static成员不参与多态;应合理使用protected、final等修饰符控制复用与扩展。
Java 中的继承通过 extends 关键字实现,核心目标是复用已有类的属性和方法,同时支持子类扩展或重写行为。它不是简单复制代码,而是建立“is-a”关系,让子类天然拥有父类的非私有成员(字段、方法),并可在此基础上定制逻辑。
子类用 extends 显式声明继承父类,一个类只能直接继承一个父类(单继承),但可多层传递(如 C extends B, B extends A)。父类构造器不会被自动继承,但可通过 super() 在子类构造器首行调用。
继承带来的复用不是静态拷贝,而是在运行时动态体现:
是否能复用,取决于父类成员的访问修饰符和设计意图:
class Animal {
protected String name;
public Animal(String name) { this.name = name; }
public void move() { System
.out.println(name + " is moving"); }
}
class Dog extends Animal {
public Dog(String name) { super(name); }
@Override
public void move() { System.out.println(name + " is running"); }
public void bark() { System.out.println(name + " is barking"); }
}
Dog 复用了 name 字段、构造逻辑和 move() 框架,重写了 move() 行为,并新增 bark() 特有功能——复用与扩展自然融合。
基本上就这些。继承不是为了多写几个 class,而是让共性下沉、差异上浮,让代码更贴近现实关系,也更容易维护和演进。