1)为什么以下既不能重载也不能相互覆盖:
void meth(List<Integer> a){}
void meth(List<String> a){}
如果上述参数导致相同类型的删除,为什么不能覆盖它们。
如果它们不能被覆盖,这意味着参数在某种程度上不同,因此如果在同一个类中但它不是这样,那么应该重载。那么上面不是冲突吗?
2) 为什么在覆盖中显示以下行为?
a)void test(int a){} //parent class method
public/protected void test(int a){} //child class method (Overridden)
b)void test(int a){} //parent class method
private void test(int a){} //child class method (not overridden)
c)public test(int a){} //parent class method
protected void test(int a){} //child class method (not overridden)
最佳答案
1- 在 java 中 - 泛型是通过删除实现的。这意味着两个版本的实际签名评估为
void meth( list a){}
显然,在同一个类定义中不能有两个具有完全相同签名的方法。
2
.如果您指定 public
,您的示例将导致编译时错误,除了第一个。
关于Java重载覆盖查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12369897/