override和overload的区别,如果子类不override会发生什么
时间: 2023-12-10 09:05:18 浏览: 31
1. override和overload的区别:
- Override:指子类重写(覆盖)父类的方法,即用自己的实现替换掉父类的实现。子类的方法名、参数列表、返回值类型必须与父类相同或者是父类方法的子类型。
- Overload:指在同一个类中定义多个方法,它们的方法名相同但参数列表不同(参数类型、参数个数或参数顺序不同),返回值类型可以相同也可以不同。
2. 如果子类不override会发生什么:
如果子类不override父类的方法,子类对象调用该方法时将使用父类的实现,即运行时绑定时会调用父类方法。如果父类方法不适用于子类对象,则子类可以选择重写该方法来提供自己的实现。如果子类重写了该方法,则运行时绑定时将调用子类方法。
相关问题
override 和 overload 区别
重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重载发生在一个类中,方法名相同,但各自的参数不同,称为重载。重写发生在子类与父类之间,要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* [Java 重写(Override)与重载(Overload)](https://blog.csdn.net/weixin_30847271/article/details/101852544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
- *2* [【软件构造】override和overload区别](https://blog.csdn.net/weixin_52966993/article/details/124827752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
- *3* [重载(Overload)与重写(Override)的区别](https://blog.csdn.net/weixin_52754604/article/details/122968798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
java中override和overload的区别
在Java中,override和overload是两种不同的方法重载机制。Override是指子类重新实现或覆盖其父类中的方法,也称为运行时多态性。Overload是指在同一个类中可以有多个名称相同但参数个数或类型不同的方法,也称为编译时多态性。
具体而言,override要求子类方法与父类方法具有相同的方法名、参数列表和返回类型,而且子类方法的访问权限不能低于父类方法。重写后的子类方法会完全替代父类方法,在通过父类引用调用时将调用子类方法。相比之下,overload要求同一个类中方法名相同,但参数列表中的类型和数量必须不同,返回类型可以不同。可以根据传入的参数类型和数量自动调用相应的方法。
总之,override是子类对父类方法的重新实现,overload是同一个类的方法名相同但参数不同的多个方法的重载。