“I bought this guide a few days ago to prepare for my interview with Oracle. Many of the questions they asked me were from this guide. I found this book absolutely great!”
A final variable cannot be reassigned, but it is not constant. For instance,
final StringBuffer x = new StringBuffer() x.append(”hello”);
is valid. X cannot have a new value in it, but nothing stops operations on the object that it refers, including destructive operations.
Also, a final method cannot be overridden or hidden by new access specifications. This means that the compiler can choose to in-line the invocation of such a method. (I don’t know if any compiler actually does this, but it’s true in theory.)
The best example of a final class is String, which defines a class that cannot be derived.
FINAL for a variable : value is constant
FINAL for a method : cannot be overridden
FINAL for a class : cannot be derived
The above answer is only partially correct.
A final variable cannot be reassigned,
but it is not constant. For instance,
final StringBuffer x = new StringBuffer()
x.append(”hello”);
is valid. X cannot have a new value in it,
but nothing stops operations on the object
that it refers, including destructive operations.
Also, a final method cannot be overridden
or hidden by new access specifications.
This means that the compiler can choose
to in-line the invocation of such a method.
(I don’t know if any compiler actually does
this, but it’s true in theory.)
The best example of a final class is
String, which defines a class that
cannot be derived.
for method-can’t be overridden
for class-can’t be inherited
for variable - constant
for method - can’t be overriden
for class - can’t be derived
final variables cannot be reassigned..
it doesnt mean that its a mere constant
Leave an Answer/Comment