Java's 'final' vs. C 's 'const': Die Nuancen jenseits der Ähnlichkeit
Während das Tutorial für Java für C-Programmierer dies nahelegt Das Schlüsselwort „final“ von Java entspricht in etwa dem „const“ von C. Eine genauere Betrachtung zeigt subtile Unterschiede.
Semantik von Funktionsmitgliedern
Markieren einer Mitgliedsfunktion in C „const“ bedeutet, dass es auf „const“-Instanzen aufgerufen werden kann. In Java fehlt diese Funktion. Beispielsweise ist in C „i.foo()“ für „const Foo& i“ zulässig, „i.bar()“ wäre jedoch verboten.
Wertzuweisung
In Java können endgültige Variablen einmal, aber später zugewiesen werden. Dies ist in C nicht zulässig. In Java ist beispielsweise „a = 10;“ ist in 'public class Foo { void bar() { final int a; } }.' In C wäre eine solche Zuweisung jedoch ungültig.
Mitgliedsvariablen
Sowohl Java als auch C erlauben, dass Mitgliedsvariablen „final“ bzw. „const“ sind. In Java müssen diese Variablen festgelegt werden, bevor der Konstruktor abgeschlossen ist, während in C Initialisierungslisten verwendet werden müssen.
Override Prevention
Das Schlüsselwort „final“ von Java kann sein Wird verwendet, um das Überschreiben von Methoden zu verhindern. In C (vor C 11) fehlt diese Fähigkeit. In Java kann „public final void foo() {}“ in der Basisklasse in abgeleiteten Klassen nicht überschrieben werden. In C (vor C 11) wäre jedoch ein Überschreiben möglich.
C 11-Update
C 11 führte „final“ ein, um eine Semantik bereitzustellen, die Javas final entspricht . Dies ermöglicht das Markieren von Klassen und Mitgliedsfunktionen als „final“ und verhindert so ein Überschreiben. Darüber hinaus kann „final“ mit „const“ für Mitgliedsfunktionen kombiniert werden.
Fazit
Während Javas „final“ und „const“ von C Ähnlichkeiten aufweisen, Es bestehen subtile Unterschiede in der Art und Weise, wie sie auf die Semantik von Mitgliedsfunktionen, die Wertzuweisung, Mitgliedsvariablen und die Verhinderung von Überschreibungen angewendet werden. C 11 erweiterte „const“ um das Konzept von „final“, was in dieser Hinsicht eine bessere Angleichung an Java ermöglicht.
Das obige ist der detaillierte Inhalt vonJavas „final' vs. Cs „const': Wie unterscheiden sie sich über die Oberfläche hinaus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!