Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果子类已经用基类扩展,如何处理继承_Java - Fatal编程技术网

Java 如果子类已经用基类扩展,如何处理继承

Java 如果子类已经用基类扩展,如何处理继承,java,Java,我有代码在类中调用一个实现的方法,即cmpreValue(int real,int virtual) 这里,cmpreValue(stringvirtual,stringreal)只使用了一次,但我想在我的另一个类中也使用这个函数。所以我试着去上另一门课,也就是 public class Helpervalidate{ void cmpreValue(String virtual, String real) { if(real.equals(virtual))

我有代码在类中调用一个实现的方法,即cmpreValue(int real,int virtual)

这里,
cmpreValue(stringvirtual,stringreal)
只使用了一次,但我想在我的另一个类中也使用这个函数。所以我试着去上另一门课,也就是

public class Helpervalidate{
    void cmpreValue(String virtual, String real)
    {
        if(real.equals(virtual))
        {
            // Not Visible objVal
            logger.info(**objVal**.something());
        }
        else{
            logger.info(virtual);
        }
    }
在我的TestCompare类中创建Helpervalidate类的对象,并在TestCompare类中调用函数cmpreValue,但我得到的错误是,Helpervalidate类中未定义objVal

因为我的类TestCompare已经扩展了TestBaseClass,所以我不能再扩展该类。 那么,如何使我的函数cmpreValue(stringvirtual,stringreal)可重用于其他类呢?
有没有什么方法可以让我简单地添加函数cmpreValue(String virtual,String real)并传递值,这样就可以正常工作?

您应该在Helpervalidate.cmpreValue方法中传递所需的所有参数。i、 e.将方法签名更改为:

void cmpreValue(String virtual, String real, XLSParser objVal)

只使用helper进行比较,并在类中进行所有日志记录,怎么样


若您有一个名为“cmpreValue”的方法,那个么让它做其他事情是不对的。

一般来说:若要将信息传递给类,您必须

  • 在类内存储对
    objVal
    的引用,并在构造函数/设置器中提供该值

    public class Helpervalidate{
        XLSParser objVal ;
        void cmpreValue(String virtual, String real){
            //do stuff    
        }
    }
    
  • 将其注入到方法中

    public class Helpervalidate{
        void cmpreValue(String virtual, String real, XLSParser objVal){
            //do stuff    
        }
    }
    

在助手中添加属性
objVal
。生成getter和setter。在实例化帮助器类时,从调用方设置值

HelperValidate validate 
= new HelperValidate();
validate.setObjVal();
然后在方法中使用this.objVal


希望这有帮助。

谢谢您的回复。我只能在函数中传递两个参数,即仅实参数和虚参数。对我来说,这就像代码冻结一样,我不能对参数进行更改。你有例外吗?如果是,那是什么?您可以向
Helpervalidate
类添加属性吗?那么我可以帮你。为什么在一个版本的方法中有
logger.info(real)
,而在另一个版本中有
logger.info(objVal.something())
?有什么意义?@AnindaBhattacharyya:是的,我可以补充……请帮忙。
HelperValidate validate 
= new HelperValidate();
validate.setObjVal();