Java重载覆盖查询

标签 java

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/

相关文章:

java - 如何将不同大小的元素立即放在彼此之上?

java - 使用通配符实例化通用对象

java - 哈希码 这是什么?

java - 无论如何,我们从 servlet 知道客户端是否仍在等待

java - 使用在编译时已知值的最终实例变量

java - 限制字符串中的字符数,并截断其余字符

java - 当我以 pdf 形式向占位符插入值时,如何设置 iText 的编码?

java - 如何转换继承的封装属性以公开子类的方法 - Java

java - executeUpdate() 只给出返回值 1

java - Java 中的泛型继承