面试官的加分题:super关键字全解析,轻松应对!

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 小米,29岁程序员,通过一个关于Animal和Dog类的故事,详细解析了Java中super关键字的多种用法,包括调用父类构造方法、访问父类成员变量及调用父类方法,帮助读者更好地理解和应用super,应对面试挑战。



Hey,大家好呀!我是小米,一个29岁热爱分享技术的大哥哥。今天又是元气满满的一天,我们继续来聊聊那些看似简单却让面试官疯狂加戏的Java面试题。这次的主角是super关键字!

super这个东西啊,初学者用得少,老鸟也未必熟悉,但它的妙用可不少。在社招面试中,要是面试官突然问起它,千万别慌!咱今天就通过一个轻松的故事,带你彻底掌握super关键字的精髓!

故事背景:代码中的家族纷争

有一天,小明被分配到一个项目中。项目里有个Animal类和Dog类,还有一堆代码看着就头大。他翻开代码的第一行:

没过几秒,又找到了继承它的Dog类:

小明轻松地运行代码:

结果果然没问题,输出:

一切看似正常,但小明发现,需求有变!项目经理说:“狗在自我介绍时,得先强调它是一种动物。能不能加个方法,调用父类的name和name对应的speak()方法?”

super登场,解决家族矛盾

小明这时回忆起培训时学的super关键字。于是,他修改了Dog类:

他重新运行代码,输出变成了:

super关键字的妙用全解

到这里,项目经理很满意,但小明觉得不够!作为一个技术Geek,他决定深入探究super关键字的更多用途,准备在面试里炫技。

1. super调用父类的构造方法

运行代码:

输出结果:

小明总结:

super必须是子类构造方法的第一行,用来调用父类的构造器。如果父类没有无参构造器,而子类没有明确调用父类的构造器,编译会报错。

super访问父类的成员变量

小明决定再验证super是否能访问父类的同名成员变量:

运行代码:

输出结果:

小明总结:

super.成员变量可以直接访问父类的成员变量,避免子类变量重名时引发冲突。

super调用父类的普通方法

这点在刚刚的super.speak()已经体现过了,但小明决定深入再测试一下。

运行代码:

输出结果:

小明总结:

子类方法中,super.方法名()可以直接调用父类的方法。

面试官的加戏题

刚好赶上社招面试,面试官拿出了super的经典问题:多层继承下,super调用的是哪一层的方法?

小明又准备了代码:

运行代码:

输出结果:

小明回答面试官:“super总是指向直接的父类,而不是跨越多层去调用更远的祖先类。

总结与收获

在这个小故事里,我们看到super有以下几大核心用法:

  • 调用父类的构造方法:super()必须是子类构造方法的第一行,用来初始化父类的构造器。
  • 访问父类的成员变量:super.变量名用于访问父类的同名变量。
  • 调用父类的方法:super.方法名()可以直接调用父类的普通方法,甚至是在重写时保留父类的逻辑。

最后的小彩蛋!

面试官问完后,小明还主动补充:“在实际项目中,super的使用频率可能不高,但在继承关系复杂的代码里,它能清晰表达对父类成员的操作,帮助我们避免不必要的混淆。”

面试官大赞:“不错,你过了!”

END

希望这篇文章能让大家对super关键字有更深的理解!如果还有其他Java面试题想听小米讲解,欢迎留言~ 咱们下期见啦!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号软件求生,获取更多技术干货!

相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
87 2
|
13天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
19天前
|
安全 编译器 C++
C++ `noexcept` 关键字的深入解析
`noexcept` 关键字在 C++ 中用于指示函数不会抛出异常,有助于编译器优化和提高程序的可靠性。它可以减少代码大小、提高执行效率,并增强程序的稳定性和可预测性。`noexcept` 还可以影响函数重载和模板特化的决策。使用时需谨慎,确保函数确实不会抛出异常,否则可能导致程序崩溃。通过合理使用 `noexcept`,开发者可以编写出更高效、更可靠的 C++ 代码。
25 0
|
2月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
105 2
|
2月前
|
存储 NoSQL MongoDB
MongoDB面试专题33道解析
大家好,我是 V 哥。今天为大家整理了 MongoDB 面试题,涵盖 NoSQL 数据库基础、MongoDB 的核心概念、集群与分片、备份恢复、性能优化等内容。这些题目和解答不仅适合面试准备,也是日常工作中深入理解 MongoDB 的宝贵资料。希望对大家有所帮助!
|
2月前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
70 1
|
4月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
505 37
|
4月前
|
缓存 Android开发 开发者
Android RecycleView 深度解析与面试题梳理
本文详细介绍了Android开发中高效且功能强大的`RecyclerView`,包括其架构概览、工作流程及滑动优化机制,并解析了常见的面试题。通过理解`RecyclerView`的核心组件及其优化技巧,帮助开发者提升应用性能并应对技术面试。
116 8
|
4月前
|
存储 缓存 Android开发
Android RecyclerView 缓存机制深度解析与面试题
本文首发于公众号“AntDream”,详细解析了 `RecyclerView` 的缓存机制,包括多级缓存的原理与流程,并提供了常见面试题及答案。通过本文,你将深入了解 `RecyclerView` 的高性能秘诀,提升列表和网格的开发技能。
85 8
|
12天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

热门文章

最新文章