【发布时间】:2010-09-22 01:32:02
【问题描述】:
首先,我扩展了一个现有的类结构,不能改变原来的结构,但要注意:
我想这样做:
class a
{
int val;
... // usual constructor, etc...
public int displayAlteredValue(int inp)
{
return (val*inp);
}
}
class b extends a
{
... // usual constructor, etc...
public in displayAlteredValue(int inp1, int inp2)
{
return (val*inp1*inp2);
}
}
正如我之前所说,我无法更改 class a,我想保留函数名称 displayAlteredValue,而不是创建一个新函数。
如果可以做到这一点,我只需将a 的一些实例更改为b 的实例。我不想花很多时间来替换对displayAlteredValue 的许多函数调用。 (是的,我确实意识到存在诸如搜索和替换之类的事情,但是由于其他原因,这样做会有问题。
有什么想法吗?
【问题讨论】:
-
我真的看不出问题;没有什么能阻止你向子类添加另一个方法。您是否试图让现有 displayAlteredValue(int) 方法的调用者神奇地开始使用您的新 displayAlteredValue(int,int) 方法?附加参数的值在哪里?
-
如果你想让调用者神奇地开始使用新方法,你必须修改所有调用站点以提供第二个参数,我相信你声称你要求避免这种情况。我对这个问题感到困惑。
-
您似乎正试图阻止用户调用旧方法。做到这一点的唯一方法是通过覆盖它来使该方法在调用它时返回一些无用的东西。
标签: java derived-class