(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;
}
}
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.
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);
}
}
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)
Ü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.