news 2026/4/18 10:08:30

java基础-继承和多态

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java基础-继承和多态

一.继承的概念理解

继承其实就是一个类开头定义的时候写extends 另一个类 就可以用另一个类里的方法

这样就能方便将同一个属性/类似方法整合到一个父类里,方便子类使用


继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能。

二.继承的语法

①最简单的继承语法:

修饰符 class 子类名 extends 父类名{
...
}

②简单运用:

③父类成员访问

刚刚你会发现我们没有在Dog类里定义name和age,因为父类已经定义过了,你可以理解为父类的代码在子类中自动存在。

那么怎么访问?

我们一般都常用写一个方法去定义(在子类Dog中)

如果访问的成员变量子类中有,优先访问自己的成员变量。
如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。
如果访问的成员变量与父类中成员变量同名,则优先访问自己的。

④子类中访问父类的成员方法

1)成员方法没有同名时,在子类方法中或者通过子类对象访问方法时,则优先访问自己的,自己没有时再到父类中找,如果父类中也没有则报错

2)成员方法名字相同:只能通过前面的方法重载来选择调用子类的or父类的方法

⑤super关键字

刚刚提到了如果有子类父类的成员变量同名,那优先访问自己的,那么怎么访问父类的?这时候就要用到 suepr.名字

super关键字主要作用:在子类方法中访问父类的成员

这里就跟this基本一样的语法,只是从访问该类变成访问继承的父类中的变量了

不过这里的继承有限制,不能直接用super.修改,但是在子类方法中就可以用super.来修改和输出

(虽然这里不用super也一样,因为没有同名)

方法也是能super的

【注意事项】
1. 只能在非静态方法中使用
2. 在子类方法中,访问父类的成员变量和方法。

⑥子类的构造方法

子类构造方法的核心作用是:调用父类的构造方法,完成父类成员的初始化

子类构造方法可以自由选择调用父类的任意构造方法(无参 / 有参),唯一要求是 “必须在第一行通过 super () 调用父类某个构造方法↓

首先图片里的父类Animal的无参构造和有参构造就跟前面学方法的一样

但是到了子类,想调用父类的无参构造就需要写super() (不写无参构造编译器也会自动生成无参构造),想调用有参构造,那就要输入数值,所以在有参构造方法里按照父类的有参构造写类型,然后super(对应父类有参构造的类型1,类型2) ,相当于传入

注:子类构造中super(...)里的参数,必须和你要调用的那个父类构造方法的参数「类型、个数、顺序」完全匹配

有参构造↓

三.继承方式

记住只能一个继承另一个,不能一个继承多个,但是可以多层一对一继承

可以多个继承同一个

四.final关键字

final关键可以用来修饰变量、成员方法以及类

简单说就是:

final修饰的变量不能再修改,修改就会出错

final修饰的类不能被继承(就是不能当父类)

五.多态

①多态的概念:就是多种形态,就是去完成某个行为,当不同的对象去完成时会产生出不同的结果/状态

其实就是为了适应不同情况下的对象,来重写方法内容

②多台的实现条件(缺一不可):
1. 必须在继承体系下
2. 子类必须要对父类中方法进行重写
3. 通过父类的引用调用重写的方法

为了按狗的要求来写,那就在一模一样的方法定义,然后修改方法里的内容,这个就叫重写

重写的核心要求是 “方法签名完全一致”,而方法签名包含「方法名 + 参数列表(个数、类型、顺序)」

③重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

【方法重写的规则】
·子类在重写父类的方法时,一般必须与父类方法原型一致: 返回值类型 方法名 (参数列表) 要完全一致


·被重写的方法返回值类型可以不同,但是必须是具有父子关系的

·访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方法就不能声明为 protected

·父类被static、private修饰的方法、构造方法都不能被重写。


·重写的方法, 可以使用 @Override 注解来显式指定. 有了这个注解能帮我们进行一些合法性校验. 例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写.

六.向上转型和向下转型

①向上转型:实际就是创建一个子类对象,将其当成父类对象来使用。
语法格式:父类类型 对象名 = new 子类类型()/父类类型 对象名=子类名(先前已经实例化了)

向上转型的作用:

(1) 直接赋值:子类对象赋值给父类对象,就是上图

(2) 作返回值:想对于所有继承Animal的子类写一个方法,那么这个方法的返回类型就用Animal

(3) 方法传参:写在方法定义的时候()中,就可以所有传入所有继承这个父类的子类(直接子类/间接子类)

向上转型的优点:让代码实现更简单灵活。
向上转型的缺陷:不能调用到子类特有的方法

②向下转型:将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转换

语法格式:原子类实例对象名=(子类对象类型)父类实例对象名

向下转型用的比较少,而且不安全,万一转换失败,运行时就会抛异常。Java中为了提高向下转型的安全性,引入了 instanceof ,如果该表达式为true,则可以安全转换

if(animal instanceof Dog){
dog= (Dog)animal;
dog.bark(); //子类狗的专有方法bark()
}

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

复合材料结构固化及微观、宏观切削加工仿真专题

在复合材料结构工艺过程中,热传导、热对流和化学交联反应等物理化学变化交互共存,树脂流动固化、纤维密实行为异常复杂,极易在复合材料厚度方向产生温度、固化度梯度,进而导致内应力、固化变形和孔隙等缺陷产生。结合上述问题&…

作者头像 李华
网站建设 2026/4/17 18:42:17

工业现场稳采集:隔离防雷防浪涌0.2%高精度电参数模块

工业级电参数采集模块是工业自动化与工业物联网(IIoT)感知层的核心电力监测设备,专门针对工业现场的电力回路、用电设备、配电系统设计,能实时、精准采集各类电气参数,完成信号转换、数据预处理后,通过工业通信协议上传至PLC、上位…

作者头像 李华
网站建设 2026/4/1 19:08:51

看完了就想试!用科哥镜像打造的语音转文字效果太惊艳

看完了就想试!用科哥镜像打造的语音转文字效果太惊艳 你有没有遇到过这种情况:开完一场两小时的会议,录音文件堆在电脑里,却迟迟不想动手整理?或者采访完一位嘉宾,面对几十分钟的音频,光是听一…

作者头像 李华
网站建设 2026/3/29 6:45:49

基于GPEN的智能相册修复系统设计思路

基于GPEN的智能相册修复系统设计思路 老照片泛黄、模糊、有划痕?家庭相册里那些珍贵的人像照片随着时间推移逐渐失去清晰度,很多人只能看着它们慢慢褪色。有没有一种方法,能自动把几十年前的老照片“复活”,让爷爷奶奶的年轻面容…

作者头像 李华
网站建设 2026/4/2 2:12:06

极视角冲刺港股:9个月营收1.4亿亏3630万 陈振杰控制30%股权

雷递网 雷建平 1月20日山东极视角科技股份有限公司(简称:“极视角”,EXTREME VISION)日前递交招股书,准备在港交所上市。9个月营收1.36亿 亏损3630万极视角成立于2015年,是一家人工智能平台型企业&#xff…

作者头像 李华
网站建设 2026/4/18 7:45:21

人形机器人动作流畅的秘诀何在?数据转化平台破解核心难题

对于人形机器人动作训练工程师而言,如何将人类动作精准复刻给人形机器人,实现从数据采集到动作落地的高效衔接,始终是研发路上的核心课题。而机器人训练动作数据转化平台的出现,正重构人形机器人动作开发的效率与精度边界。人形机…

作者头像 李华