如何在Java中更改派生类的成员函数的签名
作者:互联网
首先,我正在扩展现有的类结构,不能改变原始结构,但需要注意的是:
我想这样做:
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);
}
}
正如我之前所说,我不能改变类a,我想维护函数名称displayAlteredValue而不是创建一个新函数.
如果可以做到这一点,我只需要改变一些实例化b的实例化.我不想花很多时间将许多函数调用替换为displayAlteredValue. (是的,我确实认识到有搜索和替换之类的东西,但出于其他原因,这样做会有问题).
有任何想法吗?
解决方法:
您可以在派生类中重载函数.所以你上面指出的应该有效.刚刚写了一个快速测试,它的工作原理.
public class DerivedOverload {
/**
* @param args
*/
public static void main(String[] args) {
A classA = new A();
B classB = new B();
System.out.println("DerivedOverload.main() classA.displayAlteredValue(2) : " + classA.displayAlteredValue(2));
System.out.println("DerivedOverload.main() classA.displayAlteredValue(2) : " + classB.displayAlteredValue(2,2));
}
}
class A
{
int val = 2;
A(){
}
public int displayAlteredValue(int inp)
{
return (val*inp);
}
}
class B extends A
{
B(){
}
public int displayAlteredValue(int inp1, int inp2)
{
return (val*inp1*inp2);
}
}
系统出来了.
DerivedOverload.main()classA.displayAlteredValue(2):4
DerivedOverload.main()classA.displayAlteredValue(2):8
标签:derived-class,java 来源: https://codeday.me/bug/20190724/1520634.html