news 2026/7/3 13:46:06

Java super 关键字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java super 关键字

super代表父类(超类)对象引用,仅存在子类中,用来访问父类的成员,和代表当前对象的this对应。

一、super 三种核心用法

1. super.成员变量:访问父类同名成员变量

子类和父类属性重名时,默认优先访问子类,用super.属性指定父类。

classParent{Stringname="父类";}classSonextendsParent{Stringname="子类";voidshow(){System.out.println(name);// 子类(自身)System.out.println(super.name);// 父类(super访问父类)}}

2. super.方法():调用父类重写前的方法

子类重写父类方法后,直接调用是子类自身实现;super.方法()执行父类原始逻辑。

classParent{voidsay(){System.out.println("父类说话");}}classSonextendsParent{@Overridevoidsay(){super.say();// 先调用父类方法System.out.println("子类说话");}}

3. super():调用父类构造方法

规则:
  1. super()必须写在子类构造方法第一行
  2. 不写super(),编译器默认隐式添加无参super()
  3. 父类只有有参构造,子类必须手动super(参数),否则编译报错;
  4. super()this()不能同时存在构造器,都要求放第一行。
classParent{Stringname;// 有参构造Parent(Stringname){this.name=name;}}classSonextendsParent{// 子类构造必须调用父类有参构造Son(){super("父类姓名");// 必须第一行}}

二、super 与 this 对比

特性thissuper
含义当前类对象引用父类对象引用
访问变量本类成员变量父类成员变量
调用方法本类方法父类方法
构造调用this()调用本类其他构造super()调用父类构造
使用位置普通方法、构造方法普通方法、构造方法
静态方法不能使用不能使用

三、关键注意事项

  1. 静态方法不能用 super / this
    static 属于类,没有实例对象,super/this 依赖对象,编译报错。
  2. 构造器中super()隐含调用顶层 Object
    所有类直接/间接继承 Object,无参构造最终都会走到super()调用 Object 构造。
  3. 多层继承时,super 只直接访问直接父类,不能隔代访问爷爷类(需要爷爷类提供方法中转)。
  4. super 不能在静态代码块、静态方法中出现。

四、完整综合示例

// 父类classAnimal{Stringtype="动物";publicAnimal(){System.out.println("父类无参构造");}publicvoidrun(){System.out.println("动物奔跑");}}// 子类classDogextendsAnimal{Stringtype="小狗";publicDog(){super();// 调用父类构造,可省略}@Overridepublicvoidrun(){System.out.println(this.type);// 子类变量System.out.println(super.type);// 父类变量super.run();// 父类方法System.out.println("小狗四条腿跑");}}publicclassTest{publicstaticvoidmain(String[]args){Dogdog=newDog();dog.run();}}

输出:

父类无参构造 小狗 动物 动物奔跑 小狗四条腿跑

五、常见面试考点

  1. 子类构造方法默认第一行隐式super()
  2. 父类无无参构造,子类必须显式super(实参)
  3. super()this()互斥,不能共存;
  4. super 只能在实例方法/构造器,static 中禁用;
  5. 方法重写后通过super.方法()复用父类逻辑。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 13:46:01

STM32F756ZG与MC74HC165A实现高效多路输入扩展方案

1. 项目背景与核心价值 在嵌入式系统开发中,处理多路输入信号是常见需求。传统方案需要为每个输入分配独立的GPIO引脚,当输入数量较多时(如16个按钮),会快速耗尽MCU的宝贵引脚资源。MC74HC165A作为8位并行输入/串行输出…

作者头像 李华
网站建设 2026/7/3 13:43:52

kiran-log完全解析:基于zlog的Qt5与GTK3日志封装库入门指南

kiran-log完全解析:基于zlog的Qt5与GTK3日志封装库入门指南 【免费下载链接】kiran-log This is a kiran log library. 项目地址: https://gitcode.com/openeuler/kiran-log 前往项目官网免费下载:https://ar.openeuler.org/ar/ kiran-log是open…

作者头像 李华
网站建设 2026/7/3 13:37:26

Unity MyFramework:框架内资源管理和 YooAsset 有什么区别

Unity 项目里,资源管理是一个绕不开的问题。 小项目里可以直接 Resources.Load,或者直接拖引用。 但项目一大,就会遇到很多问题: 编辑器和真机加载方式不一致AssetBundle 依赖关系需要管理异步加载需要合并回调资源卸载时机不好…

作者头像 李华
网站建设 2026/7/3 13:36:03

DVWA从入门到精通(三):Command Injection(命令注入)

摘要:本文是《DVWA从入门到精通》系列的第三篇,带你全面掌握Command Injection(命令注入)模块的攻防全流程。从命令注入的核心原理出发,逐步讲解Low、Medium、High三个级别的攻击手法与源码分析,并深入探讨…

作者头像 李华
网站建设 2026/7/3 13:33:15

WorkshopDL终极指南:无需Steam账号免费下载创意工坊模组

WorkshopDL终极指南:无需Steam账号免费下载创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为无法访问Steam创意工坊的游戏模组而烦恼吗&#xff1…

作者头像 李华
网站建设 2026/7/3 13:27:02

LLM开发者生存图谱:大模型工程化落地的四层架构与成本可控实践

1. 这不是转行指南,而是一份LLM开发者的真实生存图谱“为什么要做大模型开发者?”——这个问题我被问了至少三十七次,提问者身份跨度极大:刚毕业的计算机系学生、做了八年Java后端突然想“搞点AI”的中年工程师、某传统制造业CTO、…

作者头像 李华