Content deleted Content added
(4 intermediate revisions by 2 users not shown) | |||
Line 10:
Example:
<syntaxhighlight lang="java">
public final class
// ...
}
// Forbidden
public class DerivedClass extends FinalClass {
// ...
}
</syntaxhighlight>
Line 21 ⟶ 26:
Example:
<syntaxhighlight lang="java">
public class Base {
public
▲ public final void m2() {...}
public static
public static final void m4() { ... }
}
public class Derived extends Base {
public void
▲ public void m2() {...} // forbidden
public static void m3() { ...
public static void m4() { ...
}
</syntaxhighlight>
Line 53 ⟶ 56:
public class Sphere {
//
public static final double PI = 3.141592653589793;
Line 62 ⟶ 65:
Sphere(double x, double y, double z, double r) {
}
Line 156 ⟶ 159:
final boolean hasTwoDigits;
if (number >= 10 && number < 100) {
hasTwoDigits = true;
}
if (number > -100 && number <= -10) {
hasTwoDigits = true; // compile-error because the final variable might already be assigned.
}
</syntaxhighlight>
Line 168 ⟶ 171:
if (number % 2 == 0) {
isEven = true;
}
Line 181 ⟶ 184:
if (number % 2 == 0) {
isEven = true;
}
Line 194 ⟶ 197:
Further, because C and C++ expose pointers and references directly, there is a distinction between whether the pointer itself is constant, and whether the data pointed to by the pointer is constant. Applying <code>const</code> to a pointer itself, as in <code>SomeClass* const ptr</code>, means that the contents being referenced can be modified, but the reference itself cannot (without casting). This usage results in behaviour which mimics the behaviour of a <code>final</code> variable reference in Java. By contrast, when applying const to the referenced data only, as in <code>const SomeClass* ptr</code>, the contents cannot be modified (without casting), but the reference itself can. Both the reference and the contents being referenced can be declared as <code>const</code>.
In C++, the <code>final</code> keyword is used to denote that a function cannot be further overridden. It is also used similarly to Java to declare a class as final (cannot be extended)
<syntaxhighlight lang="C++">
// final in a class declaration declares that a class cannot be extended
class Z final : public X, public Y {
public:
// final in a method signature declares that a method cannot be overridden further
void someOperation() override final {
// do something here
}
};
</syntaxhighlight>
==C# analogs for final keyword ==
[[C Sharp (programming language)|C#]] can be considered as similar to Java, in terms of its language features and basic syntax: Java has JVM, C# has .Net Framework; Java has bytecode, C# has MSIL; Java has no pointers (real memory) support, C# is the same.
Regarding the final keyword, C# has two related keywords:
|