Java 爪哇语;虚拟的;参数个数可变的方法

Java 爪哇语;虚拟的;参数个数可变的方法,java,c#,android,oop,Java,C#,Android,Oop,我是OOP新手,我想在JAVA-Android中使用扩展类中的函数,但参数数量不同 据我记忆所及,在C#中,我可以做到以下几点: 主类 class Command { protected int NrTokens protected String cmd protected String[] AnswerTokens Command(String[] Tokens) { AnswerTokens = Tokens

我是OOP新手,我想在JAVA-Android中使用扩展类中的函数,但参数数量不同

据我记忆所及,在C#中,我可以做到以下几点:

主类

    class Command {
     protected int NrTokens
     protected String cmd
     protected String[] AnswerTokens

     Command(String[] Tokens) { 
        AnswerTokens = Tokens   
    }
     virtual int Parse()
     virtual int Send()
}
并使用如下虚拟方法

class Command1 : Command{
 protected int NrTokens=2;
 protected String cmd="abc";
 protected String AnswerTokens;
//

class ComandPing():Command(AnswerTokens);


public void Parse(){
if (AnswerTokens.size != NrTokens) 
    throw exception
//show on screen the status
}

Send() {
    //todo
}
}
我用Java做过这样的尝试

abstract class Command {
    protected int NrTokens;
    protected String cmd;
    protected String[] AnswerTokens;


    public void SetAnswerTokens(String Tokens[]){
        AnswerTokens = Tokens;
    }


    abstract void Parse();
    abstract void Send();



}

问题是,如果我使用参数,它不会覆盖。我只需要一些子类的参数,比如Command1、Command10,但不需要Command5的参数,我需要调用Send和Parse而不需要参数


您能帮助我吗?

如果您想重写Java中的方法,您不能更改参数计数、类型或顺序

如果某些子类型需要一个参数并且需要多态性,那么这里肯定需要一个参数

我建议使用包装器类。 您可以使用新的Java8可选类型或GoogleGuavas可选类型。或者,你也可以自己写一个,如果这能提供额外的好处的话

有关Java 8的可选信息,请参见:

有关番石榴的可选信息,请参见:

空对象模式也可能是您感兴趣的。基本思想是使用可能表示空参数的对象(类似于空列表,而不是空列表)


< C++ > C++ C++中的java设计,但java语言的命名设计与C++不同:方法名和变量名应该使用CAMELSE(即没有初始的资本)。您能否澄清前两个代码示例是用哪种语言编写的?是C#吗?关于语言关系,整个问题都不清楚,请改进一下。对不起,我编辑了这个问题
public class Command1 extends Command {

    protected int NrTokens=2;
    protected String cmd="PING";
    protected String AnswerTokens;

    public Command1(String Tokens[]){

    }

    @Override
    void Parse(String b){
        if (AnswerTokens.length()!= NrTokens)
        {

        }

    }

    @Override
    void Send(int a) {

    }