2012-03-09 68 views
2

重写方法我有一个方法,如 //基类不同的变量名

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: 我使用代理模式为我设计

感谢

+0

你是否改变了添加'Derived Class'注释的问题? – Mahesh 2012-03-09 00:25:51

回答

5

参数的名称并不重要。运行时,java没有办法告诉您在给定时间要调用哪种方法。为了过载方法,签名必须是不同的,所以或者必须有不同数量的参数,或者参数必须是可区分的顺序,即String, intint, String

2

重载或超载是基于类型的变量,但不能对变量名称(标识)本身。因此,基本上两种方法都具有相同的签名void foo(long ,long ,long)

+0

不,实际上我没有重载。没有编译器错误,因为我用相同的方法签名覆盖。我在问是否这是一个糟糕的设计?因为我有2个具有相同参数的重写方法,但只有参数的含义是不同的。赞赏您的输入。谢谢 – vasu1486 2012-03-09 00:44:03

0

既然你要为foo()添加一个子类实现,这并不坏。所以,如果你需要一个更具体的实现而不是追求一般的超类实现,那么你必须重写它并在上面添加特定的实现。