2016-06-14 29 views
2

Meine Frage ist sehr spezifisch. Ich arbeite mit einer Eltern- und einer Kindklasse. Ich arbeite mit bestimmten gegebenen Anweisungen und ich überschreibe die indexOf() -Methode von der Elternklasse in der Kindklasse. Wenn der Parameter das Klassenobjekt eines Parents ist, geben den indexOf() - Wert der Elternklasse basierend auf dem Parameterwert zurück. Wenn der Parameter ein String-Objekt ist, geben den indexOf() - Wert der Elternklasse zurück, wenn das Klassenobjekt eines Parents vom String-Parameter übergeben wird.Übergeordnete/untergeordnete Klassenbeziehung - indexOf

Die fett gedruckten Teile sind, was ich nicht bekomme. Dies ist das erste Mal, dass ich mit so etwas arbeite, also bin ich mir nicht sicher, wie ich es angehen soll. Das habe ich bisher:

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 
} 
} 

Irgendwelche Vorschläge oder Lösungen wären wunderbar!

Zum Thema Eltern/Kind-Klasse. Da ich mit LinkedList erweitere anstatt nur die Superklasse zu erweitern - gibt es eine spezielle Art, wie ich auf die Getter/Setter-Methoden der Superklasse zugreife?

Hier ist ein Beispiel für was ich arbeite. Der Compiler gibt mir das „Can not Symbol suchen“, und dass die Lage der Getter-Methode ist in der Unterklasse, aber nicht die übergeordnete Klasse:

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

Antwort

3

Sie müssen hier das super Schlüsselwort verwenden, um die indexOf der Eltern zugreifen:

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

Ich sehe! Ist es erforderlich, String-Typ über Daten in der zweiten Bedingung zu werfen? – Ani

+1

@Ani Wenn Sie keinen Konstruktor haben, der ein 'Object' als Parameter annehmen kann, ist casting notwendig, um einen Kompilierungsfehler zu vermeiden. – 4castle

+0

Vielen Dank! :) Ich werde es überprüfen – Ani