编程语言
首页 > 编程语言> > 如何在Java中更改派生类的成员函数的签名

如何在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