これは、「ノード」から継承するすべてのための理想的な場所ですが、でもそれは不要です。\
あなたはおそらくしたいことはあなたの別のクラスへの参照を含む単一の一般的な「ノード」オブジェクトであります(継承の前に構成を使用する)。
その時点で、それぞれの異なるクラスは、おそらくそれらに実行できる何かを持っています(そうでなければ、それらはすべて同じデータ構造にあります)。ノードクラスは、このインタフェースに委譲できます。または、他のクラスがこのインタフェースでクラスを抽出し、それに基づいて動作することができます。
これはノードにも何かを強制しようとするよりも良いでしょう - 簡単なことをしてください。
--edit--私は本当にあなたのシナリオについては何も投稿していなかったので、あなたに関連する例を追加することはできません。
しかし、あなたはこれらの異なるクラスA、B * Cを持っているとしましょう。オブジェクトの子であることを除けば、まずすべてATに関連していますか?彼らがすべてインターフェイス「Iface」を実装しているとしましょう。 (ない場合は、単に「オブジェクト」とのifaceを置き換えることができますが、これは本当に悪いデザインを意味します。)
をとにかく、あなたの「ノード」オブジェクトは今ちょうど1 object--
public class Node {
private List<node> children;
private Iface myObject;
... setters, getters, tree implementation, tree navigation, related garbage...
}
これはありますあなたのツリーを作成するのに十分です。物事をスムーズにするためにできることの1つは、「Node Implements Iface」を持って、そのオブジェクトにすべての呼び出しを委譲します。 IFACEが食べる(食品foodtype)メソッドが含まれている場合たとえば、あなたのノードがIFACEを実装し、方法かもしれない:それはそれが含まクラスだったかのよう
public void eat(Food foodtype) {
myObject.eat(foodtype);
}
をこれは、「ノード」クラス行為になるだろう。
ところで、この時点では、myObjectを "private final"にして、コンストラクタでnullでないことを確認するのが良いでしょう。そうすれば、あなたはそれが設定されており、委任されたメンバーのどれもがヌルチェックをしなければならないことをいつも知るでしょう。
現在、ジェネリックスやテンプレートのようには見えません。もしあなたが私たちに何か情報をくれたら?あなたがここで行うことができる唯一のことは、インターフェースを実装すること、または抽象基本クラスから継承することです。 – Falmarri
好奇心の喪失から、なぜこれを行う必要がありますか?これは宿題の問題ですか? – templatetypedef
このツリーはNodeBレベル(2レベル)に制限されていますか、NodeC、NodeD ...が発生すると思われますか? –