2

スーパークラスにメソッドセットがあります...

 public void explain() {

     for (Item item: Instances) {
         System.out.println(item.getname + " is in location " + item.place):
     }
 }

サブクラスでこの同じメソッドをオーバーライドして元の出力メッセージを出力する必要がありますが、このメソッドの新しいインスタンスは、サブクラスで設定されたさまざまな値を出力する必要があります

私はオーバーライドビットと混同しており(私はそれについてほとんど知らないため)、説明が必要です.

4

2 に答える 2

2

したがって、次のような基本クラスのパラメーターでメソッドを指定するだけです

public void explain(Instances i)

サブクラスでそれを呼び出します。何もオーバーライドする必要はなく、基本クラスからコードを再利用できるという利点があります。または、より複雑なロジックの場合は、次のようなテンプレート メソッド パターンを試すことができます。

基本クラス

public abstract class Base {

    public abstract explain(Instances i);

    public void print(Item i) {
        //do something
    }
}

サブクラス

public class Subclass extends Base {

    @Override 
    public void explain(Instance instances) {
         //do some logic and call print in loop
         print(someItemfromInstances);
    }
}
于 2013-10-23T17:57:50.223 に答える