重载还是封装?
在 Java 中,方法重载需要满足条件:方法名相同,参数类型或个数不同,返回类型可以不同。针对以下代码中的两个方法:
public int add(int a, int b) public void add(Integer a, integer b)
登录后复制
虽然它们都有相同的名称,但它们参数的类型不同。因此,它们算作重载方法。
编译报错的原因
如果再定义以下方法:
public int add(int a, int b) public int add(Integer a, Integer b)
登录后复制
编译器会报错。这是因为:
- java 会首先查找基本类型参数(int)的方法。
- 如果找到匹配的,则不会再查找封装类型参数(integer)的方法。
- 由于返回值类型相同,java编译器会认为这两个方法是相同的。
因此,为避免编译错误,重载方法应遵循以下规则:
- 参数类型不同(基本类型与封装类型不算不同)。
- 参数个数不同。
- 返回类型可以不同。
暂无评论内容