public class FinalDemo1
{
public static void main(String[] args)
{
/*
* If the final keyword is attached to a variable
* then the variable becomes constant i.e. its value
* cannot be changed in the program.
*/
final int intValue = 1000;
intValue = 500;// Compile Time Error
}
}
Output
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The final local variable intValue cannot be assigned. It must be blank and not using a compound assignment
at FinalDemo1.main(FinalDemo1.java:11)
FinalDemo2.java class SuperClass
{
final void methodOfSuperClass()
{
System.out.println("final Method");
}
}
class SubClass extends SuperClass
{
void methodOfSuperClass()
{
//Compile time error, final method can not be overridden.
}
}
public class FinalDemo2
{
public static void main(String[] args)
{
SuperClass superClass = new SubClass();
superClass.methodOfSuperClass();
}
}
Output Exception in thread "main" java.lang.VerifyError: class SubClass overrides final method methodOfSuperClass.()V
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
FinalDemo3.java /*
* If a class is marked as final then this class
* cannot be inherited by any other class.
*/
final class SuperClass1
{
void methodOfSuperClass()
{
System.out.println("final class");
}
}
class SubClass1 extends SuperClass1
{
}
public class FinalDemo3
{
public static void main(String[] args)
{
SuperClass1 superClass1 = new SubClass1();
superClass1.methodOfSuperClass();
}
}
Output Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from SubClass1 to SuperClass1
at FinalDemo3.main(FinalDemo3.java:23)
FinalizeDemo.java public class FinalizeDemo
{
private String name = null;
public FinalizeDemo(String name)
{
super();
this.name = name;
}
public static void main(String[] args)
throws InterruptedException
{
FinalizeDemo FinalizeDemo1 = new FinalizeDemo("FinalizeDemo1");
FinalizeDemo1 = null;
FinalizeDemo FinalizeDemo2 = new FinalizeDemo("FinalizeDemo2");
FinalizeDemo1 = null;
FinalizeDemo2 = null;
System.gc();
Thread.sleep(100);
}
public void finalize()
{
System.out.println(this.name
+ " Object finalize method is called");
}
}