在 Java 中,什么时候用重载,什么时候用重写

在 Java 中,什么时候用重载,什么时候用重写

重载

概念: 重载是在同一个类中,有多个同名的方法,但参数类型、数量或顺序不同。

目的: 提供多种方式调用同一名称的方法,以适应不同的场景。

应用: 当需要以统一的方式来处理不同类型的数据时,可以用重载。

重写

概念: 重写发生在继承关系中,子类重新定义父类的方法。

目的: 子类可以根据自己的需求,改变或扩展父类的行为。

应用: 当子类需要增加新的功能,或者改变父类方法的行为时,可以使用重写。

简单总结:

重载: 提供多种方法签名。目的是提高程序的多样性和健壮性,以适配不同场景使用时,使用重载进行扩展;

重写: 增强剂,在不修改原方法的基础上增强或改变行为。

生活例子:

想吃一碗面,给你提供了拉面、炒面、刀削面等选项,这是重载。

不仅端来了面条,还加了青菜、鸡蛋等配料,这是重写。

设计模式:

Cglib实现动态代理的核心原理就是方法的重写。

详细解答:

重载的应用场景: 构造器的重载是最常见的应用场景之一,比如Spring框架中的​​ClassPathXmlApplicationContext​​类,其构造函数使用重载提供了多种初始化方式。

重写的应用场景: 子类可以通过重写父类的方法来扩展或修改父类的功能,比如Cglib动态代理中,代理类会重写目标类的方法。

总结:

重载必须修改方法的形参列表,返回值类型不能修改,访问权限也不能更严格。

重写只能用于子类对父类方法的扩展或修改,不能抛出比父类方法声明的异常更多的异常。

里氏替换原则:

子类应尽可能不要重写和重载父类的方法,除非必要。

相关文章

腾讯在线文档去掉底色
best365投注

腾讯在线文档去掉底色

🌱 06-30 💬 583
髐的解释
beat365体育亚洲网址

髐的解释

🌱 08-12 💬 553
寻仙跨区战场全汇总
best365投注

寻仙跨区战场全汇总

🌱 08-19 💬 350