2016-06-14 6 views
2

私の質問は非常に具体的です。私は親クラスと子クラスで作業しています。特定の指示に従って作業しています。子クラスの親クラスからindexOf()メソッドをオーバーライドします。パラメータが親のクラスオブジェクトである場合、は、パラメータ値に基づいて親クラスのindexOf()値を返します。パラメータがStringオブジェクトの場合、は、文字列パラメータから作成された親のクラスオブジェクトが渡されたときに親クラスのindexOf()値を返します。親子関係 - indexOf

太字の部分は、私が得意でないものです。私がこのようなことをしているのは今回が初めてなので、どうやってそれにアプローチするのか分かりません。これはこれまで私が持っているものです:

public class KillList extends LinkedList<AssassinNodeData> { 

public int indexOf(Object data) { 
    if (data instanceof AssassinNodeData) { 
     return ..... 
    } else if (data instanceof String) { 
     return .... 
    } else 
     return -1; // under all other circumstances 
        // circumstance to indicate parameter is not of current class 
} 
} 

どのような提案や解決策が素晴らしいでしょう!

親/子クラスのトピックについてスーパークラスを拡張するのではなく、LinkedListで拡張しているので、スーパークラスからgetter/setterメソッドにアクセスする特別な方法はありますか?

ここに私が取り組んでいるものの例があります。コンパイラは、「シンボルを検索することができません」とgetterメソッドの場所は、スーパークラスのサブクラスである、ではないことを私に与えている:

@Override 
public String toString() { 
    return getKiller() + "is stalking" + getPlayer(); 
} 

答えて

3

あなたが親のindexOfにアクセスするには、ここsuperキーワードを使用する必要があります。

public int indexOf(Object data) { 
    if (data instanceof AssassinNodeData) { 
     return super.indexOf(data); 
    } else if (data instanceof String) { 
     return super.indexOf(new AssassinNodeData((String)data)); 
    } else { 
     return -1; 
    } 
} 
+1

私は見る! 2番目の条件でデータの上にString型をキャストする必要がありますか? – Ani

+1

@Aniパラメータとして 'Object'を取るこ​​とができるコンストラクタを持っていない限り、コンパイル時エラーを防ぐためにキャストが必要です。 – 4castle

+0

ありがとう! :)私はそれをチェックします – Ani