gpt4 book ai didi

java - 如何更改 Java 中派生类的成员函数的签名

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:04:52 24 4
gpt4 key购买 nike

首先,我扩展了一个现有的类结构,不能改变原来的类结构,但要注意:

我想这样做:

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 的许多函数调用。 (是的,我确实知道有搜索和替换之类的东西,但是出于其他原因,这样做会有问题)。

有什么想法吗?

最佳答案

您可以在派生类中重载函数。所以你上面指定的应该有效。刚刚编写了一个快速测试,它成功了。

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) : 4DerivedOverload.main() classA.displayAlteredValue(2) : 8

关于java - 如何更改 Java 中派生类的成员函数的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/285238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com