Java組み込みクラスのすべての機能を継承するインターフェースを作成できますか?
私がやろうとしていること:
Fragment を拡張するクラスがたくさんあります。クラスには、いくつかの属性 (get、set) といくつかの関数があります。さまざまなクラスのオブジェクトを作成した後、それらを 1 つの一般的な Fragment リストに入れました。
しかし、ポリモーフィズムを導入したいと思います。1 つのインターフェイス クラスと他のすべてのクラスがそれを実装して、関数をオーバーライドできるようにします。
しかし、問題は、ポリモーフィズムを使用したい場合はインターフェイスが必要であり、インターフェイスは Fragment である必要があるため、これらのフラグメントをリストに入れることができるため、Fragment クラスからインターフェイスを作成するか、インターフェイスを継承できるかということです。フラグメントから?
画像で現在の状況を確認できます
アップデート
私が達成したいことを示すコードは次のとおりです。
したがって、xmlSAXParser であるメイン関数があり、タグに遭遇すると、正しいクラスのオブジェクトを作成します。
case template:
switch (typeObjecten.toType(atType)) {
case NOVALUE:
break;
case chapter:
chapter = new ChapterFragment();
typeObject = "chapter";
break;
case execute:
execute = new ExecuteFragment();
typeObject = "execute";
break;
case first:
first = new FirstFragment();
typeObject = "first";
break;
...
終了タグが見つかったら、正しいオブジェクトをリストに追加します。
case template:
switch (typeObjecten.toType(typeObject)) {
case NOVALUE:
break;
case chapter:
fragments.add(ownFrag);
break;
case execute:
fragments.add(execute);
break;
case first:
fragments.add(first);
break;
case navigation:
fragments.add(navigation);
break;
case story:
fragments.add(story);
break;
....
また、すべてのクラスで背景が変更される可能性があるため、オブジェクトが正しい関数を呼び出すクラスを確認する必要があります。
case background:
if (typeObject.equalsIgnoreCase("navigation")) {
navigation.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("chapter")) {
//chapter.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("first")) {
ownFrag.setBackgroundColor("#" + text);
first.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("execute")) {
execute.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("story")) {
story.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("intro")) {
intro.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("mission")) {
mission.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("question")) {
question.setBackgroundColor("#" + text);
} else if (typeObject.equalsIgnoreCase("info")) {
info.setBackgroundColor("#" + text);
}
break;
...
したがって、「グローバルな」フラグメントを作成して、プログラムがどのクラスからどの関数を呼び出さなければならないかを自分自身で見つけられるとよいでしょう (ポリモーフィズム?)