web-dev-qa-db-de.com

Android @Override-Nutzung

(Neuling in Java, alte Zeit C # Kerl.)

Ich habe viel von der Verwendung von @Override in Android-Beispielcode bemerkt. Ich dachte, dass alle Java-Methoden standardmäßig "virtuell" waren?

Was macht dann @Override?

Beispiel: 

private class HelloWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
65

Dies ist eine Anmerkung, mit der Sie dem Compiler und Ihrer IDE mitteilen können, dass Sie beabsichtigen, dass die Methode, die diese Anmerkung enthält, eine Überschreibung einer Superklassenmethode ist. Sie haben Warnungen/Fehler, falls Sie Fehler machen, z. B. wenn Sie beabsichtigen, eine Methode zu überschreiben, sie aber falsch schreiben, wenn die Anmerkung vorhanden ist, wird die IDE oder der Compiler Ihnen mitteilen, dass es nicht in ist Überschreiben der Superklassenmethode und damit können Sie feststellen, warum und die Rechtschreibfehler korrigiert werden.

Dies ist umso wichtiger für Android-Anwendungen und -Aktivitäten, zum Beispiel, bei denen alle Aufrufe auf dem Aktivitätslebenszyklus basieren. Wenn Sie die Lebenszyklusmethoden nicht ordnungsgemäß überschreiben, werden sie niemals vom Framework aufgerufen. Alles wird gut kompiliert, aber Ihre App funktioniert nicht so, wie Sie es beabsichtigen. Wenn Sie die Anmerkung hinzufügen, wird eine Fehlermeldung angezeigt.

97
JRL

Dieser Code für den Anfänger, der wirklich etwas über den @Override-Prozess wissen möchte, wird Ihnen dabei helfen! (Erben Sie das Vererbungskonzept von Java.)

Beispielsweise kann die Klasse Fish zwei Unterklassen haben: FreshwaterFish und SaltwaterFish

Diese Unterklassen verfügen über alle Funktionen der Fish-Klasse, könnten jedoch die Objekte durch neue Attribute und Verhaltensweisen oder geänderte Verhaltensweisen der übergeordneten Klasse Fish weiter anpassen. Beispielsweise könnte die Klasse FreshwaterFish Informationen über die Art der Süßwasserumgebung enthalten, in der sich die Umgebung befindet (z. B. Fluss, See, Teich oder Pfütze).

In ähnlicher Weise kann die SaltwaterFish-Klasse die makeBabyFish()-Methode so anpassen, dass der Fisch seinen Partner nach der Zucht frisst (wie in der Superklasse definiert), indem er den Override-Mechanismus wie folgt verwendet:

public class SaltwaterFish extends Fish  
{  
    @Override  
    public void makeBabyFish(Fish fishSpouse, int numBabies) {  
        // call parent method  
        super.makeBabyFish(fishSpouse, numBabies);  
        // eat mate  
        eat(fishSpouse);  
    }  
}
49
samir vora

Die Override-Annotation ist nur ein Hinweis für den Compiler, dass Sie eine bestimmte Funktion überschreiben möchten. Der Compiler überprüft dann übergeordnete Klassen und Schnittstellen, ob die Funktion dort vorhanden ist. Wenn nicht, erhalten Sie einen Kompilierungsfehler.

Es ist im Grunde nur ein Sicherheitsmechanismus.

Siehe diesen Artikel (Überschreiben wird irgendwo in der Mitte erklärt)

22
lostiniceland

Überschreiben wird meistens verwendet, wenn eine Methode definiert wird. Überschreiben ist ähnlich wie seine Bedeutung.

Ich werde versuchen, es sehr lahm zu erklären. Angenommen, Sie haben die Oncreate () - Methode bereits definiert und verfügen über die zugehörigen Eigenschaften. Wenn Sie in Ihrem Code die Oncreate () -Methode für ein bestimmtes Objekt aufrufen, überschreibt der Code, den Sie jetzt geschrieben haben, die formal definierte Eigenschaft oder die geerbte Eigenschaft von Oncreate () für Ihre Anwendung.

0
vivek