Content deleted Content added
→C/C++ analog of final variables: combined two sentences into one to avoid repetition |
No edit summary |
||
Line 1:
{{lowercase}}
In the [[
Once a <code>'''final'''</code> variable has been assigned, it always contains the same value. If a <code>'''final'''</code> variable holds a reference to an object, then the state of the object may be changed by operations on the object, but the variable will always refer to the same object (this property of <code>'''final'''</code> is called ''non-transitivity''<ref>{{cite journal|last1=Coblenz|first1=Michael|last2=Sunshine|first2=Joshua|last3=Aldrich|first3=Jonathan|last4=Myers|first4=Brad|last5=Weber|first5=Sam|last6=Shull|first6=Forrest|title=Exploring Language Support for Immutability|journal=The 38th International Conference on Software Engineering|date=14{{ndash}}22 May 2016}}</ref>). This applies also to arrays, because arrays are objects; if a <code>'''final'''</code> variable holds a reference to an array, then the components of the array may be changed by operations on the array, but the variable will always refer to the same array.<ref>
==Final classes==
A '''final [[Class (computer science)|class]]''' cannot be subclassed. Doing this can confer security and efficiency benefits, so many of the
Example:
<source lang="
public final class MyFinalClass {...}
Line 17:
==Final methods==
A final [[Method (computer science)|method]] cannot be [[Method overriding|overridden]] or hidden by subclasses.<ref>[http://docs.oracle.com/
Example:
|