私はJava継承に不慣れです。Termという私の親クラスのコードを参照してください。
public class Term {
public String value;
public void setValue(String value)
{
this.value=value;
}
public String getValue()
{
return value;
}
}
クラスOperatorTermはTermを拡張します
public class OperatorTerm extends Term {
public static Operator type;
public static boolean equals(String value)
{
String regex="(\\++)|(-+)|\\*|/";
boolean isOperand=value.matches(regex);
return isOperand;
}
public void assignType(String value)
{
if(value.equals("+"))
type=Operator.ADD;
else if(value.equals("-"))
type=Operator.SUBTRACT;
else if(value.equals("*"))
type=Operator.MULTIPLY;
else if(value.equals("/"))
type=Operator.DIVIDE;
else if(value.equals("++"))
type=Operator.INCREMENT;
else
type=Operator.DECREMENT;
}
}
別のクラスで次のようなOperatorTermオブジェクトを作成しています。
public static Term getTerm(String termValue)
{
Term newTerm=null;
if(ValueTerm.equals(termValue))
newTerm=new ValueTerm();
else if(ReferenceTerm.equals(termValue))
newTerm=new ReferenceTerm();
else if(OperatorTerm.equals(termValue))
{
newTerm=new OperatorTerm();
}
return newTerm;
}
最後のelseifステートメントで、次のnewTerm.assignTypeを実行します。assignTypeはOperatorTermクラスのメソッドですが、Termクラスには存在しません。それができません。newTermを使用してOperatorTermクラスのメソッドにアクセスする方法を誰かに教えてもらえないかと思います。
を使用してオーバーライドされたクラスのオブジェクトを作成しています
else if(OperatorTerm.equals(termValue))
{
OperatorTerm newOperatorTerm = new OperatorTerm();
newOperatorTerm.assignType(...);
newTerm = newOperatorTerm;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加