我有一些类似于以下的方法: // 基础类
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: 我正在使用代理模式进行设计。
我有一些类似于以下的方法: // 基础类
public void foo(long A, long b,long c)
{
//Implementation 1
}
//Derived Class
public void foo(long AA,long b,long c)
{
//Implementation 2
}
参数名称并不重要。在运行时,Java无法确定您想要调用哪个方法。要重载方法,签名必须不同,因此参数数量必须不同,或者参数必须以可区分的顺序排列,例如String,int
和int,String
。
覆盖或重载是基于变量类型而不是变量名称(标识符)本身的。因此,基本上这两种方法具有相同的签名void foo(long ,long ,long )
既然你要为foo()添加一个子类实现,那么这并不是坏事。因此,如果你需要比通用的超类实现更具体的实现,你必须覆盖它并在上面添加特定的实现。