答:java类内部的方法名称可以相同。
原因:
java的一个特性是“多态性”。多态性包括两种:
①类内部多态(重载)。
②继承中多态(覆写)。
类内部的多态:在一个类的内部如果有多个方法的方法名相同参数列表不同。
由类内部多态的定义可知,同一个类中,可以出现相同名称的方法,但是参数列表一定要不同。其中最典型的就是有参和无参的构造方法。
实体类中有参和无参的构造方法:
//无参构造方法
public Animal() {
}
//无参构造方法
public Animal(String lb, String name, Integer age) {
this.lb = lb;
this.name = name;
this.age = age;
}
同理,在抽象类和接口中,在参数列表不同的情况下,也可以出现方法名称相同的方法。
抽象类示例:
public abstract class b {
abstract int get();
abstract int get(int a);
}
接口示例:
public interface a {
int get();
int get(int a);
}
注意:mybatis框架xml标签与接口绑定
上面说到,接口中可以定义两个方法名一样参数列表不同的方法,那是不是意味着xml文件中的sql语句标签(以select标签为例)中的id是可以重复的呢?
答案:id是不可以重复的。因为id是唯一标识,与接口方法绑定,形成映射。
如果xml存在重复id,maven项目启动时会出现报错信息:
org.springframework.beans.factory.UnsatisfiedDependencyException:……
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.od.dao.idao.CityMapper.BaseResultMap
本文探讨了Java中类内部方法名称可以相同的现象,重点介绍了类内部多态(重载)的概念,包括有参和无参构造方法示例,并澄清了XML中SQL标签id的唯一性问题。此外,还涉及接口中方法的多态实现。
391

被折叠的 条评论
为什么被折叠?



