java - 为什么在覆盖一个方法的时候子类方法的可见性不能小于父类。

查看:252
本文介绍了java - 为什么在覆盖一个方法的时候子类方法的可见性不能小于父类。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在覆盖一个方法的时候,为什么子类方法的可见性不能小于父类该方法的可见性?
比如父类是public,子类就一定也要是public的。
如果小于父类会有什么弊端么?

解决方案

里氏替换的基本原则,要求子类的方法必须能确保替代父类的实例,如果可见性缩小,那就不能替代了。
比如最常用的继承的场景

Car car = new Audi();
car.openDoor();

比如父类Car的中openDoor是public的,Audi中的openDoor是private的。
那你在后续的代码中,如果想要使用openDoor,都需要先判断是不是Audi类,因为他没权限openDoor,
这明显违背替换原则和使用继承的目的。

这篇关于java - 为什么在覆盖一个方法的时候子类方法的可见性不能小于父类。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆