Definite Assignment Analysis for Final Variables – Object-Oriented Programming
Definite Assignment Analysis for Final Variables The name of a final variable can occur in the following contexts: in its declaration when it is declared, in the context of an assignment when it is assigned a value, and in the context where its value is accessed in an expression. The analysis performed by the compiler determines whether the blank final variable is initialized before its value is accessed. This involves checking whether a blank final variable has been assigned a value on any possible path of execution to where the value of the variable is accessed. In technical terms, this means a blank final variable must be definitely assigned before any access. Click here to view code image final int k; // Declaration: blank final local variablek = 10; // (1) AssignmentSystem.out.println(k); // (2) Access: k is definitely assigned. boolean status = true; // Non-constant variable.final int j; // Declaration:…
Final Declarations – Object-Oriented Programming
5.5 Final Declarations The keyword final can be used in the following contexts in Java: Final Classes A class can be declared final to indicate that it cannot be extended—that is, one cannot define subclasses of a final class. In other words, the class behavior cannot be changed by extending the class. This implies that one cannot override or hide any methods declared in such a class. Its methods behave as final methods (p. 226). A final class marks the lower boundary of its implementation inheritance hierarchy. A concrete class is a class that has only concrete methods—that is, methods that are non-abstract, and therefore have an implementation. Only a concrete class can be declared final. If it is decided that the class TubeLight at (12) in Example 5.9 may not be extended, it can be declared final. Any attempt to specify the class name TubeLight in an extends clause…