Java super关键字用法详解:访问父类成员与调用父类方法

何川
何川
发布时间:2026-10-15| 3人浏览过
原创

在Java面向对象编程中,super 关键字主要用于引用当前对象的父类引用。它常被用于解决子类与父类同名成员的访问冲突,以及明确调用父类的构造函数或方法。本文将通过具体代码实例与内存模型分析,展示 super 的实际应用场景。

super 关键字的核心功能

super 是 Java 提供的保留字,代表对当前对象父类部分的引用。它在以下三种场景中发挥关键作用:

  1. 调用父类构造器:必须在子类构造器的第一行使用(例如 super()),且不可与 this() 共存。
  2. 访问被子类隐藏的变量:当子类定义与父类同名的成员变量时,直接使用变量名将访问子类的属性,此时需使用 super.变量名 强制访问父类的属性。
  3. 调用父类被重写的方法:在子类重写了父类方法后,若需在子类方法逻辑中保留或复用父类的原始行为,可使用 super.方法名() 进行调用。

第1步:构建具有继承关系的父子类结构

为了验证上述用法,我们设计一个包含属性与方法复写的简单场景。父类 FatherClass 持有整型 value,而子类 ChildClass 不仅继承了父类,还定义了自己的 value 并重写了 f() 方法。

class FatherClass {
  public int value;
  public void f() {
    value = 100;
    System.out.println("FatherClass.value:" + value);
  }
}

class ChildClass extends FatherClass {
  private int value;
  
  public void f() {
    // 核心动作:先执行父类的f()逻辑
    super.f();
    // 随后修改并输出子类自身的value
    value = 200;
    System.out.println("ChildClass.value:" + value);
    System.out.println(value);                // 此处直接打印,默认指代子类变量
    System.out.println(super.value);          // 显式使用super,指向父类变量
  }
}

public class TestInHerit {
  public static void main(String args[]) {
    ChildClass cc = new ChildClass();
    cc.f();
  }
}

第2步:观察控制台的执行结果

运行上述 TestInHerit 程序,控制台依次输出以下内容:

从输出中可以清晰地观察到两个维度的差异:
1. 第一行输出了 100,这是由 super.f() 触发的父类逻辑,其中父类的 value 被赋值为 100。
2. 后续输出的 200 则是子类局部作用域下的 value。这表明在同一个作用域块内,如果直接写 value,编译器优先匹配到的是子类自身定义的字段。

第3步:分析对象在内存中的布局分布

为了更好地理解为什么会出现这种“隔离”现象,我们需要查看堆内存中对象的实际构成:

当 new ChildClass() 被创建时,生成的对象并非仅仅包含子类独有的属性,而是包含了完整的层次结构。ChildClass 对象的内存布局实际上是由两部分叠加而成的:
- 上半部分包含从 FatherClass 继承而来的公共/私有成员变量和方法区链接;
- 下半部分追加 ChildClass 自己声明的特有成员。
这种物理上的合并存储方式,正是 super 能够准确定位到父类数据区域的底层基础。

以上就是对Java中super关键字用法与实际应用原理的详细内容,更多关于Java继承机制与对象模型的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。