3.0 java中继承中的super作用

Java继承与组合 我们举例写的类是现实事物的抽象. 而我们真正开发所遇到的项目往往业务比较复杂, 可能会涉及到一系列复杂的概念, 都需要我们使用代码来表示, 所以真实项目中所写的类也会有很多. 类之间的关系也会更加复杂.即使如此, 我们并不希望类之间的继承层次太复杂. 一般我们不希望出现超过三层的继承关系. 如果继承层次太多, 就需要考虑对代码进行重构了.继承(inheritance)机制:面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类的特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。 阅读详情

一句话总结它的作用:super 代表的是“父类”(或者叫超类、基类)空间,用来在子类中访问父类的成员(属性、方法、构造器)。

1. 使用场景一:用 super 调用父类的构造器(最常用)

当你在 new 一个子类对象时,子类的构造器必须先调用父类的构造器,确保从父类继承过来的属性能够被正确初始化。

🚨 核心规则:隐式调用
如果你在子类的构造器里没有手动写 super(),Java 编译器会在第一行自动帮你加上 super();(调用父类的无参构造器)。

class Father {
    public Father() {
        System.out.println("1. 父类无参构造器被调用");
    }
}

class Son extends Father {
    public Son() {
        // 编译器在这里偷偷加了一行:super();
        System.out.println("2. 子类构造器被调用");
    }
}

当你 new Son() 时,控制台会先打印 1,再打印 2。

💡 显式调用:父类没有无参构造器怎么办?
如果父类只定义了带参数的构造器,编译器就不会自动加 super() 了。这时子类必须手动显式调用 super(参数),否则编译直接报错。

class Father {
    String lastName;
    // 父类只有带参构造器
    public Father(String lastName) {
        this.lastName = lastName;
    }
}

class Son extends Father {
    int age;
    public Son(String lastName, int age) {
        super(lastName); // 🚨 必须手动调用父类带参构造器,且必须写在第一行!
        this.age = age;
    }
}

2. 使用场景二:用 super 区分同名的属性(成员变量)

如果子类起了一个和父类一模一样的变量名,父类的变量就会被“隐藏”。此时如果你想在子类中访问父类的那个变量,就需要加上 super. 前缀。

class Father {
    String name = "张三(老爸)";
}

class Son extends Father {
    String name = "张小三(儿子)";

    public void show() {
        System.out.println(name);       // 打印:张小三(儿子) —— 默认就近原则
        System.out.println(this.name);  // 打印:张小三(儿子) —— 显式指定当前子类
        System.out.println(super.name); // 打印:张三(老爸)   —— 🚨 通过 super 突破限制,访问父类
    }
}

3. 使用场景三:用 super 调用父类被重写(Override)的方法

在面向对象开发中,子类经常会重写父类的方法。但有时候,子类并不想完全抛弃父类的方法,而是想在父类方法的基础上进行“功能增强”。

这时就可以用 super.方法名()。

class Robot {
    public void work() {
        System.out.println("开机,开始扫描环境...");
    }
}

class CleaningRobot extends Robot {
    @Override
    public void work() {
        super.work(); // 🚨 先让父类做它该做的事(开机和扫描)
        System.out.println("开始拖地、擦桌子..."); // 子类特有的拓展功能
    }
}
Python--class的super方法、多重继承和MRO python中的类是可以多继承的 python中的类方法和对象方法通过super调用父类的方法 上面两句话是对python class的一般认识,但其实第二句是错的。 阅读详情

相关推荐

【Java 基础】引用型数组、Java 继承、super 关键字详解

Java 语法篇 —— 引用类型数组、继承、Super关键字详解。

商务合作 | 共同学习 | 携手共进 2万+

【Java面试】Java面经-语法基础部分

Java面经-语法基础部分

jayxiaoxionger的博客 724

用STM32定时器PWM高级功能驱动步进电机:F103C8T6+TB6600实战教程

本文详细介绍了如何利用STM32F103C8T6微控制器的定时器PWM高级功能驱动TB6600步进电机驱动器,实现高效、灵活的运动控制方案。通过硬件配置、PWM参数计算、运动控制算法及TB6600高级功能应用的全面解析,为工业自动化和精密控制领域提供了实用的技术参考。

game4的博客 186

【Java】继承、super、final、子类构造方法

本篇文章对继承的用法、super关键字、final关键字等等进行了详细地介绍

Yeeear的博客 1130

使用 C# 实现大华监控摄像头的控制与数据处理

本文介绍了使用C#调用大华SDK(DHNetSDK.dll)开发监控系统的方法。主要内容包括:开发准备、DLL引用设置、SDK初始化与设备登录、视频预览窗口嵌入、云台控制、抓图录像等核心功能实现。通过P/Invoke技术封装SDK接口,开发者可以快速构建具有视频监控、设备控制功能的C#应用程序。文中还提供了代码示例、常见问题解决方案,以及视频帧智能分析的扩展建议,为开发大华监控系统的二次应用提供了完整的技术指南。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1275

通达信强龙趋势幅图指标 - 精准捕捉趋势,把握强势行情,多角度分析个股,强弱一目了然

STICKLINE(趋势>0 AND SJTJ,4.8,5.8,1.5,0),COLORYELLOW;STICKLINE(资金>0 AND SJTJ,1.2,2.2,1.5,0),COLOR0080FF;STICKLINE(异动>0 AND SJTJ,0,1,1.5,0),COLORFF0080;STICKLINE(异动=0 AND SJTJ,0,1,1.5,1),COLORGRAY;

Q1809330692的博客 5629

java用super继承_super 在Java继承中的作用??

展开全部关键字super明确显式地指出一个类可以它父类的构造函数、方法和变量。关键字super和继62616964757a686964616fe58685e5aeb931333337393537承一起建立类和它的父类的紧密联系。继承隐含地指出子类对父类所拥有的访问权限。例如,当我们要调用一个实例方法时,如果实例本身并没有定义该方法,那我们自然地会得到它的父类中定义的同名方法。尽管会因为方法的覆盖或...

weixin_36294852的博客 329

个人信息保护合规审计人员(高级)能力考核试卷+面试模拟

《个人信息保护合规审计考试与面试指南》 摘要:本文提供个人信息保护合规审计考试及面试的全面指导。考试采用闭卷笔试形式,满分100分,合格线75分,时长120分钟,包含单选、多选、判断题及综合案例分析题。内容涵盖《个人信息保护法》核心条款、审计程序、风险评估等实务要点。面试环节采用情景模拟方式,重点考察应试者在压力下处理审计独立性、客户关系与监管要求的平衡能力,以及应对数据泄露等突发事件的处置流程。案例题聚焦大型互联网平台的数据收集、共享、跨境传输等高风险环节的合规审计,要求设计完整的审计方案框架。面试评分标

qq_41525079的博客 1142

Java基础(八):封装、继承、多态与关键字this、super详解

解锁Java高内聚低耦合的终极密码!5种this用法、super调用禁区、多态转型陷阱——这些教科书没讲透的OOP实战技巧,一文终结你的困惑

从基础到源码解析的学习记录 3132

FGC_grasp复现

FGC_GraspNet复现

qq_39568387的博客 385

FPGA实现CAN接口(SJA1000)

学无止境,善于积累,每天积累一点点,成功就在眼前,加油! 1 CAN总线简介 CAN(Controller Area Network,控制器局域网 )总线是一个多主机异步串行总线,也是国际上应用最广泛的现场总线之一。在现场总线中,它是惟一被ISO国际标准化组织批准的现场总线。由于其成本低、容错能力强、支持分布式控制、通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。特别是由于CAN总线具有...

m0_46498597的博客 1万+

Java继承和Super

Java继承和super的部分细节

m0_74228964的博客 708

RK3588 部署 YOLO26-Pose 人体姿态检测:Windows Docker 环境全流程

YOLO26-Pose 在 RK3588 上的部署流程是 PC 端 ONNX 导出 → RKNN 转换(INT8 量化)→ 板端推理。INT8 量化后 YOLO26s-Pose 约 35ms,YOLO26n-Pose 约 15ms,可以覆盖实时姿态检测的需求。后处理是 Python 实现的常见瓶颈——如果帧率不达标,先用 npy 保存模型输出在 PC 上验证解析逻辑的正确性,确认无误后再迁移到 C++ 实现。

m0_64661770的博客 543

Python 3 中的 super()

而且,如果你的程序包含多层继承,那么这个 super() 函数对你很有帮助。正如我们之前所述,Python 的 super() 函数允许我们隐式地引用父类。好吧,Python 的 super() 总是引用直接的父类。正如你所看到的,Python 3 的 super 函数使用起来更加简单,语法也更加清晰。在继承的情况下,当我们想要调用父类函数时,它非常有用。首先,让我们看一下我们在 Python 继承教程中使用的以下代码。函数,还可以调用父类的所有其他函数。因此,在下面的示例中,我们将看到这一点。

rubys_的专栏 1950

双馈风机并网系统宽频振荡机理与抑制方法研究

双馈风机并网系统宽频振荡分析与抑制 摘要:本文研究了双馈风机(DFIG)接入弱电网引发的宽频振荡问题。通过建立DFIG并网系统阻抗模型,分析了锁相环带宽、电流环带宽等参数对阻抗特性的影响。研究揭示了DFIG与电网阻抗交互导致交截频率处相位差超过180°的振荡机理。提出基于锁相环优化的阻抗重塑抑制策略,采用电压补偿和陷波器改善系统稳定性。仿真结果表明,该方法能有效降低相位差约10°-168°,显著抑制宽频振荡。代码实现了阻抗建模、稳定性分析和抑制策略验证,为工程应用提供了理论依据。

huanghm88的专栏 319

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java基础23继承super关键字作用

3.继承 ​ 继承的好处: ​ 1) 简化了类的编写 ​ 2) 可以让父类、子类 以及后面的孙类,形成一个体系,这个也是多态的基础 ​ 3) 不支持多继承 ​ 4) private(私有) 修饰的成员可以继承,但是不可见 ​ 5) 构造函数不可以被继承 ​ 6) 如果子类的成员与父类相同,子类会覆盖父类 ​ 7) 构造函数:不能被继承,在子类的构造函数中会调用父类的构造函数 ​ 8...

lx1315998513的博客 244

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java 继承

c. 构造方法中:this用来调用本类的构造方法,super用来调用父类的构造方法,两种方法不能同时在构造方法中出现,因为他们都要在第一句。3. 如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。2. 若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的 super()调用,即调用父类构造方法,如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。2. super();

的博客 1912

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JAVA中的继承

在实际开发中,继承和重载经常结合使用。子类可以继承父类的方法,同时也可以重载父类的方法。在子类中覆盖了父类的方法后,若还想要调用父类的方法,则需要使用super关键字。

bigH2004的博客 776

6. 继承、重写、super、final

你的程序火了以后,又有大爷大妈来找你了。他们说,不能光给养狗的写啊,也得考虑一下他们这些养猫的、养仓鼠的人啊。这个问题该怎么解决呢?总不能给每种宠物都写一个程序吧,那得把人累死。或者说在当前程序里再定义一些cat类、Hamster类等,定义完怎么办呢,又得重新定义姓名、年龄、品种、食物、吃喝拉撒这些属性,这是不是太麻烦了。

m0_62024160的博客 1003

java学习之继承与super关键字

//car_box.java package package_two; /** error:Implicit super constructor car() is undefined. * Must explicitly invoke anoth

橘子局的专栏 938

Java super关键字详解:继承体系中的父类导航与核心用法

在面向对象编程中,继承是实现代码复用和扩展的核心机制。其原理在于子类能够自动获取父类的属性和方法,形成层次化的类结构。这一机制的技术价值在于构建可维护、可扩展的软件架构,广泛应用于框架设计、业务建模等场景。当子类需要访问或调用被覆盖的父类成员时,就需要明确指向父类的引用,这正是Java中super关键字的核心作用。它作为子类中访问父类成员的导航器,主要用于调用被覆盖的方法、访问被隐藏的字段以及在构造器中初始化父类部分,是理解和应用方法重写、构造器链等高级特性的基础。掌握super的用法,对于编写健壮的、符合

keke1314520的博客 387

关于Java继承中super的使用

super关键字的使用: 三种情况: 1.在子类中使用父类的成员变量(同名)。 2.子类重写了父类的方法时,本来应该直接调用子类的方法,用super来执行父类中的方法。 3.子类不会继承父类的构造方法(构造方法不会被继承也不会被重写),使用super来用父类的构造方法。(写在子类构造方法的第一句!!!) 第一个例子:(情况1和情况2) class Sum{ int n; float...

pyh2358的博客 955

Java中的继承

继承核心是extends,实现is-a复用,Java 限制单继承。super强制访问父类成员/构造,必须在子类构造第一行,与this互斥。执行顺序:静态代码块(类加载)→ 实例代码块 → 构造方法(对象创建)。一句话:this找自己,super找爹。

2401_89107727的博客 403

【Java】继承 保姆级别 从0到出师!

本文系统讲解 Java 继承的概念 语法 内存模型 构造方法 super/this 关键字 执行顺序 访问规则以及 final/组合等扩展知识点

xingzi1019的博客 690

Java:继承——继承概念+父子类成员、构造访问顺序+super、this关键字(代码+画图超详解!)

当想明确访问父类中成员时,借助super关键字即可。

linsc_05的博客 1570

super在Java继承中的用法小结

所以我简单的总结了一下,“this()是调用自己其他的构造函数,super()是调用自己继承的父类的构造函数“,如果只想调用默认无参数的父类构造函数,不用在子类的构造函数当中写出来,但是实际编程的时候,总是会忽略这一点。今天要总结的是 super 这个关键字的使用,super 在构造函数中出现的时候一般是当前这个类继承了其他的类,super 的出现就是为了调用父类的构造函数,贴段代码先。3)整个调用的过程和递归调用函数有点类似,不断充气球,直到整个气球膨胀起来,不断的深层递进,遇到停止标记,逐层的跳出来。.

wuxiaopengnihao1的博客 541
上一篇: 0.IDEA 中,如何快速查看类的属性和方法
下一篇: 二(8.3):Java中的注解
偏爱自由 !
博客等级 码龄6年 12粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值