使用不同变量名覆盖方法

3

我有一些类似于以下的方法: // 基础类

public void foo(long A, long b,long c)
 {
    //Implementation 1
 }

//Derived Class

public void foo(long AA,long b,long c)
  {
   //Implementation 2
  }

我想了解这个设计有什么问题? FYI: 我正在使用代理模式进行设计。

你是否已经修改了问题并添加了“派生类”注释? - Mahesh
3个回答

8

参数名称并不重要。在运行时,Java无法确定您想要调用哪个方法。要重载方法,签名必须不同,因此参数数量必须不同,或者参数必须以可区分的顺序排列,例如String,intint,String


3

覆盖或重载是基于变量类型而不是变量名称(标识符)本身的。因此,基本上这两种方法具有相同的签名void foo(long ,long ,long )


不,实际上我没有过载。由于我使用相同的方法签名进行覆盖,所以没有编译器错误。我想知道这是否是一个糟糕的设计?因为我有两个重载的方法具有相同的参数,但只有参数的含义不同。感谢您的建议。谢谢。 - vasu1486

0

既然你要为foo()添加一个子类实现,那么这并不是坏事。因此,如果你需要比通用的超类实现更具体的实现,你必须覆盖它并在上面添加特定的实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接