You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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),否则编译报错。

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对象,执行流程是:
    1. 调用Level构造,传入参数8;
    2. Level构造里执行super(8),触发Base构造把自身的value设为8;
    3. Level构造执行完成,对象创建完毕;
    4. 调用b1.getV()时,因为Level没重写这个方法,所以调用父类Base的getV,返回8,第二个输出是8。

关于继承设置值的说明

子类通过继承父类的成员变量,再借助super调用父类构造(或者父类提供的公共方法,比如这里的raisevalue),来完成父类成员变量的赋值。本质是利用继承特性复用父类的初始化逻辑,避免重复写代码。

内容的提问来源于stack exchange,提问作者VASANTH N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:23:07