2016-06-14 185 views
2

我的問題非常具體。我正在與父母和孩子一起工作。我正在處理特定的指示,我將從子類的父類中覆蓋indexOf()方法。如果參數是父類的對象,則將根據參數值返回父類的indexOf()值。如果參數是一個字符串對象,返回父類的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

這裏需要使用super關鍵字來訪問父的indexOf

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

我明白了!是否有必要在第二種情況下將字符串類型轉換爲數據? – Ani

+1

@Ani除非你有一個可以將'Object'作爲參數的構造函數,否則爲了防止編譯時錯誤,必須進行強制轉換。 – 4castle

+0

謝謝! :)我會檢查出來 – Ani