java继承中,子类可直接复用父类的public和protected成员,同一包内还可访问默认(包级私有)成员;private成员不被继承。

Java 中的继承,是指一个类(子类)通过 extends 关键字获取另一个类(父类)中所有非 private 的属性和方法,从而复用已有代码并在此基础上扩展新功能。它不是简单复制粘贴,而是建立一种“is-a”关系,比如 Dog extends Animal 表示“狗是一种动物”,天然具备动物的共性行为。
继承的核心目的就是代码复用
父类封装多个子类共有的字段(如 name、age)和方法(如 eating()、breathing()),子类无需重复定义,直接继承即可使用。修改父类一处逻辑,所有子类自动同步更新,维护成本大幅降低。
通过 extends 实现继承的基本写法
语法非常简洁明确:
- 定义父类:
class Animal { public String name; public void eat() { ... } } - 定义子类并继承:
class Dog extends Animal { public void bark() { ... } } - 使用时:
Dog d = new Dog(); d.name = "旺财"; d.eat(); d.bark();——name和eat()来自父类,bark()是子类独有
哪些成员能被子类直接复用?
继承不是全盘接收,访问受修饰符控制:
-
public成员:子类可直接访问,无论是否在同一包 -
protected成员:子类可直接访问,即使在不同包中 - 默认(包级私有)成员:仅当子类与父类在同一个包内时可访问
-
private成员:不会被继承,子类无法直接访问(需通过父类提供的 public/protected 方法间接操作)
继承带来的关键约束和特性
理解这些才能避免踩坑:
- Java 只支持单继承:一个子类只能有一个直接父类(
class A extends B✅,class A extends B, C❌) - 所有类都隐式继承自
Object:哪怕没写extends,String、ArrayList等也都是Object的间接子类 - 构造方法不被继承:但子类构造器默认或显式调用
super()来初始化父类部分 - 子类可新增自己独有的成员,也可重写(override)父类的非 final 方法,实现行为定制
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











