(易混点)java中,关于子类继承父类的private方法与final方法

探讨Java中子类继承父类private及final方法的规则。解析牛客网面试题,总结三种情况:private方法、final方法及两者兼有的方法在子类中的表现。深入理解方法可见性和不可重写性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(易混点)java中,关于子类继承父类的private方法与final方法

对于子类继承父类的方法,相信很多人都已经掌握得非常熟悉了,今天由于在做牛客网的一道关于这个知识点的面试题,忽略了一个非常重要的细节,导致入坑了。因此,在这里分享自己的总结:一来是希望可以加深自己的理解,防止再次掉坑,二来也是希望跟大家一起分享,一起学习,有写的不对的地方欢迎大家指正。

以下附上牛客网上的原题

在这里插入图片描述
正确的答案是A

下面我从三个方面进行分析

1.父类中的方法被private修饰,子类中也定义了一个跟父类一样的方法

在这里插入图片描述
这种情况编译和运行都没有问题,运行的结果是输出“son”

2.父类中的方法被final修饰,子类中重写了这个方法
在这里插入图片描述
这种情况编译不通过

3.父类中的方法同时被private和final修饰,子类中也定义了一个跟父类一样的方法
在这里插入图片描述
这种情况编译和运行同样都没有问题,运行的结果也是输出“son”

针对于上面三种不同的情况,所产生不同的结果,在此进行总结:
①父类中被private修饰的方法表示仅在该类可见,所以子类没有继承到父类的private方法,因此,若子类定义了一个与父类的private方法相同的方法名和参数列表也是没问题的,相当于子类自己定义了一个新的方法;

②而父类中被final修饰的方法表示不可以被子类重写,如果没有被private修饰则表示该方法是有被子类继承但是不可以被覆盖,若子类定义了相同的方法则编译无法通过。

③需要注意的点:若父类中的方法是既被private修饰也被final修饰了,那么说明该方法是不会被子类继承,此时子类定义相同的方法也没有问题,不再产生重写与final的矛盾,而是在子类中定义了新的方法。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值