最初のコマンドライン引数が-1の場合は、特定のクラスのインスタンスの変数を作成し、それ以外の場合はその子クラスのインスタンスを作成するプログラムを作成しています。親クラスと子クラスはすべて同じメソッドとメソッド名を共有しますが、子クラスはその一部の親クラスをオーバーライドします。言い換えれば、宣言後の残りのプログラムは、どのクラスを使用するかにかかわらずまったく同じです。私が現時点で宣言しているのは次のとおりです。if/elseブロック内の変数の宣言
if(args[0].compareTo("-1") == 0){
BST Tree = new BST();
}
else{
RBT Tree = new RBT();
}
後でTreeを参照すると「解決できません」というエラーがスローされます。たくさんの冗長コードなしでこの問題の解決策はありますか?私は明らかにこれらのif/elseブロック内にmain関数全体を置くことができますが、もっと簡潔な解決策があればそれを避けたいと思います。
BSTとRBTはどのように関係していますか?彼らは共通の基本クラスを持っていますか? –
RBTがBSTを拡張しているようです。 – Gendarme