java中extends实现单继承,子类复用父类非私有成员,需满足访问权限与语法约束,并支持方法重写。

Java 中使用 extends 关键字让一个类(子类)继承另一个类(父类),从而直接复用父类的非私有属性和方法。继承是面向对象三大特性之一,核心在于“子类 is-a 父类”的关系。
extends 的基本语法与要求
子类通过 extends 声明继承父类,且 Java **只支持单继承**(一个子类只能有一个直接父类)。
- 语法格式:class 子类名 extends 父类名 { ... }
- 父类不能是 final 类,也不能是 private 或默认访问权限的顶层类(需能被子类访问)
- 构造方法不会被继承,但子类构造器默认或显式调用 super() 来初始化父类部分
子类能继承哪些成员
子类继承的是父类中 可访问的非私有成员:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- public 和 protected 的属性与方法:子类中可直接使用(同包或不同包均适用)
- 默认(包级)访问权限 的成员:仅当子类与父类在同一个包内时才可继承
- private 成员不会被继承:子类无法直接访问,但可通过父类提供的 public/protected getter/setter 间接操作
- 构造方法不被继承:但必须参与初始化——子类构造器第一行默认执行 super()(无参)或可显式写 super(参数)
继承中的方法重写(Override)
子类可对从父类继承来的非 final、非 private 方法进行重写,以提供更具体的实现:
- 重写方法需满足:方法名、参数列表、返回类型(或协变返回类型)一致,访问权限不能更严格(如父类 protected,子类不能 private)
- 建议添加 @Override 注解,帮助编译器检查是否真正重写成功
- 重写后,通过子类对象调用该方法,执行的是子类版本;若需调用父类原逻辑,可用 super.方法名()
实际代码示例
例如定义父类 Animal 和子类 Dog:
class Animal {
protected String name;
public Animal(String name) { this.name = name; }
public void speak() { System.out.println(name + " 发出声音"); }
}
class Dog extends Animal {
public Dog(String name) { super(name); } // 显式调用父类构造器
@Override
public void speak() { System.out.println(name + " 汪汪叫"); }
}
使用时:Dog d = new Dog("旺财"); d.speak(); 输出 “旺财 汪汪叫”,体现了继承 + 重写的结合效果。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










