news 2026/4/27 16:17:58

Java继承

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java继承

先赞后看,养成习惯!!! ^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我坚持下去的动力,点赞后不要忘记关注我哦

个人主页:伯明翰java
文章专栏:JavaSE
如有错误,请您指正批评 ^ _ ^

1. 继承

1.1 为什么需要继承

Java中将现实中具体的东西抽象成类,类经过实例化之后的产物对象,则可以⽤来表⽰现实中的实体。但现实中物与物之间存在一定的关联,那么设计程序过程中就要考虑类与类之间是否存在一定的联系
⽐如:狗和猫,它们都是⼀个动物。
使⽤Java语⾔来进⾏描述,就会设计出这样的代码:

// Dog.javapublicclassDog{Stringname;intage;floatweight;publicvoideat(){System.out.println(name+"正在吃饭");}publicvoidsleep(){System.out.println(name+"正在睡觉");}voidBark(){System.out.println(name+"汪汪汪~~~");}}// Cat.JavapublicclassCat{Stringname;intage;floatweight;publicvoideat(){System.out.println(name+"正在吃饭");}publicvoidsleep(){System.out.println(name+"正在睡觉");}voidmew(){System.out.println(name+"喵喵喵~~~");}}

通过上述代码来看,猫与狗的类存在大量的代码重复
那能否将这些共性抽取呢?⾯向对象思想中提出了继承的概念,专⻔⽤来进⾏共性抽取,实现代码复⽤。

1.2 继承概念

继承:是Java中一种使得子类可以自动共享父类数据结构和方法的机制,是代码复用的重要手段,它允许程序员在原有类的基础上进行扩展。
继承主要解决的问题是:共性抽取,实现代码复用

1.3继承的语法

在Java中如果要表⽰类之间的继承关系,需要借助extends关键字

修饰符class⼦类extends⽗类{// ...}
// Animal.javapublicclassAnimal{Stringname;intage;publicvoideat(){System.out.println(name+"正在吃饭");}publicvoidsleep(){System.out.println(name+"正在睡觉");}}// Dog.javapublicclassDogextendsAnimal{voidbark(){System.out.println(name+"汪汪汪~~~");}}// Cat.JavapublicclassCatextendsAnimal{voidmew(){System.out.println(name+"喵喵喵~~~");}}// TestExtend.javapublicclassTestExtend{publicstaticvoidmain(String[]args){Dogdog=newDog();// dog类中并没有定义任何成员变量,name和age属性肯定是从⽗类Animal中继承下来的System.out.println(dog.name);System.out.println(dog.age);// dog访问的eat()和sleep()⽅法也是从Animal中继承下来的dog.eat();dog.sleep();dog.bark();}}

从上述代码我们可以看到Dog类和Cat类的部分代码重复使⽤了Animal中的代码。

1.4成员访问

在⼦类⽅法中或者通过⼦类对象访问成员时:

  • 如果访问的成员变量⼦类中有,优先访问⾃⼰的成员变量。
  • 如果访问的成员变量⼦类中⽆,则访问⽗类继承下来的,如果⽗类也没有定义,则编译报错。
  • 如果访问的成员变量与⽗类中成员变量同名,则优先访问⾃⼰的。
    成员变量访问遵循就近原则,⾃⼰有优先⾃⼰的,如果没有则向⽗类中找

⼦类中访问⽗类的成员⽅法:

  • 成员⽅法没有同名时,在⼦类⽅法中或者通过⼦类对象访问⽅法时,则优先访问⾃⼰的,⾃⼰没有时再到⽗类中找,如果⽗类中也没有则报错。
  • 通过派⽣类对象访问⽗类与⼦类同名⽅法时,如果⽗类和⼦类同名⽅法的参数列表不同(重载),根
    据调⽤⽅法适传递的参数选择合适的⽅法访问,如果没有则报错;

1.5 super关键字

在一定场景下⼦类和⽗类中可能会存在相同名称的成员,如果要在⼦类⽅法中访问⽗类同名成员时,该如何操作?直接访问是⽆法做到的,Java提供了super关键字,该关键字主要作⽤:在⼦类⽅法中访问⽗类的成员

publicclassBase{inta;intb;publicvoidmethodA(){System.out.println("Base中的methodA()");}publicvoidmethodB(){System.out.println("Base中的methodB()");}}publicclassDerivedextendsBase{inta;// 与⽗类中成员变量同名且类型相同// 与⽗类中methodA()构成重载publicvoidmethodA(inta){System.out.println("Derived中的method()⽅法");}// 与基类中methodB()构成重写(即原型⼀致,重写后序详细介绍)publicvoidmethodB(){System.out.println("Derived中的methodB()⽅法");}publicvoidmethodC(){// 对于同名的成员变量,直接访问时,访问的都是⼦类的a=100;// 等价于: this.a = 100;b=101;// 等价于: this.b = 101;// 注意:this是当前对象的引⽤// 访问⽗类的成员变量时,需要借助super关键字// super是获取到⼦类对象中从基类继承下来的部分super.a=200;super.b=201;// ⽗类和⼦类中构成重载的⽅法,直接可以通过参数列表区分访问⽗类还是⼦类⽅法methodA();// 没有传参,访问⽗类中的methodA()methodA(20);// 传递int参数,访问⼦类中的methodA(int)// 如果在⼦类中要访问重写的基类⽅法,则需要借助super关键字methodB();// 直接访问,则永远访问到的都是⼦类中的methodA(),基类的⽆法访问到super.methodB();// 访问基类的methodB()}}

注:子类不能访问父类用final修饰的方法、静态方法和private修饰的方法

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:46:20

NVIDIA显卡隐藏性能终极挖掘:Profile Inspector深度优化指南

想要彻底释放你的NVIDIA显卡潜能吗?这款专业的性能调优工具将带你进入显卡优化的全新境界。通过深入访问NVIDIA驱动数据库,你可以调整那些在官方控制面板中完全隐藏的高级参数设置。无论是追求极致帧率的竞技玩家,还是注重画质体验的单机爱好…

作者头像 李华
网站建设 2026/4/23 11:51:25

纪念币预约3招制胜攻略:从抢购焦虑到轻松拥有的蜕变之旅

还在为每次纪念币发行时的"秒光"现象而苦恼吗?从熬夜蹲点到反复刷新页面,传统预约方式让无数收藏爱好者倍感压力。现在,一款革命性的纪念币自动预约工具正在改变这一现状,让预约过程变得简单高效。 【免费下载链接】aut…

作者头像 李华
网站建设 2026/4/22 18:29:56

如何用Universal x86 Tuning Utility释放35%隐藏性能?[特殊字符]

如何用Universal x86 Tuning Utility释放35%隐藏性能?🚀 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility …

作者头像 李华
网站建设 2026/4/27 14:21:06

如何评估第三方提供的TensorRT引擎可靠性?

如何评估第三方提供的TensorRT引擎可靠性? 在AI模型加速部署日益迫切的今天,越来越多团队选择直接使用第三方提供的预编译TensorRT引擎——毕竟从ONNX转到高效.engine文件的过程既耗时又容易出错。尤其在智能安防、工业质检和车载系统这类对上线周期敏感…

作者头像 李华
网站建设 2026/4/23 10:46:38

面向大学生的Multisim14.0基础训练项目:零基础入门

从零开始玩转电路:Multisim14.0实战入门指南你有没有过这样的经历?在《电路分析》课上听着老师讲RLC振荡、运放增益,满黑板的公式写得飞起,可一合上书本,脑子里只剩下一堆抽象符号——电压到底怎么变化的?电…

作者头像 李华
网站建设 2026/4/27 10:04:21

Packet Tracer官网下载兼容性设置:全面讲解

如何从 Packet Tracer 官网下载并解决兼容性问题:一篇真正能用的实战指南 你是不是也遇到过这种情况——兴冲冲地从 Packet Tracer 官网下载 了安装包,结果双击没反应、启动闪退、界面模糊得像打了马赛克?尤其在高分屏笔记本上&#xff0c…

作者头像 李华