Java继承如何设置值?解析含super关键字的代码逻辑
代码解析:继承中
super关键字的作用与值的设置 核心概念梳理
子类继承父类时,会继承父类的非私有成员(变量和方法),但父类的私有成员子类无法直接访问。如果要初始化父类的私有成员,就得借助父类的构造方法——这就是super关键字在这里的核心作用。
逐段拆解代码
1. Base父类
class Base{ private int value ; public Base(int value){ this.value = value; } public void raisevalue(int v){ this.value = value+ v; } public int getV(){ return value; } }
private int value:父类的私有成员变量,仅能在Base类内部操作。- 构造方法
Base(int value):专门用来给私有成员value赋值的入口。 getV():提供外部读取私有value的公共方法。
2. Level子类
class Level extends Base{ public Level(int value){ super(value); } }
extends Base:声明Level是Base的子类,继承了Base的raisevalue和getV方法,同时拥有父类的私有value(但不能直接修改)。super(value):这行代码是显式调用父类Base的带参构造方法,把传入的value参数传递给父类,让父类自己完成私有成员value的初始化。- 注意:Java规定子类构造必须先执行父类构造,要么显式用
super指定,要么隐式调用父类无参构造。这里Base没有无参构造,所以必须显式写super(value),否则编译报错。
- 注意:Java规定子类构造必须先执行父类构造,要么显式用
3. Main方法执行流程
public static void main(String[] args) { Base b = new Base(5); Base b1 = new Level(8); System.out.println(b.getV()); System.out.println(b1.getV()); }
Base b = new Base(5);:直接创建Base对象,调用Base构造把value设为5,getV()返回5,第一个输出是5。Base b1 = new Level(8);:这是多态写法,引用类型是Base,但实际创建的是Level对象,执行流程是:- 调用Level构造,传入参数8;
- Level构造里执行
super(8),触发Base构造把自身的value设为8; - Level构造执行完成,对象创建完毕;
- 调用
b1.getV()时,因为Level没重写这个方法,所以调用父类Base的getV,返回8,第二个输出是8。
关于继承设置值的说明
子类通过继承父类的成员变量,再借助super调用父类构造(或者父类提供的公共方法,比如这里的raisevalue),来完成父类成员变量的赋值。本质是利用继承特性复用父类的初始化逻辑,避免重复写代码。
内容的提问来源于stack exchange,提问作者VASANTH N
相关产品推荐
相关产品推荐

