class
Overriding Fields
In this example we shall show you how to override a super class field in a subclass. To override a super class field in a subclass we have performed the following steps:
- We have created a class,
A
that has a final int field set to 1, and an int field. It has anint getAttr()
that prints a message and returns the int field. - Class
B
extendsA
and also has a final int field set to 2. It also has a methodint getAttr()
that calls its superclassgetAttr()
and returns its int field. - We create a new instance of
A
and call itsgetAttr()
method. - We also create a new instance of
B
class and call itsgetAttr()
method. - Then we create a new
A
object, usingB
constructor and use the object’sgetAttr()
method. - In order that B object is initialized A constructor is first called,
as described in the code snippet below.
package com.javacodegeeks.snippets.core; class A { final int field = 1; int x; int getAttr() { System.out.println("In OA.getAttr"); return field; } } class B extends A { final int field = 2; int getAttr() { System.out.println("In OB.getAttr"); super.getAttr(); // Just to show flow of control return field; } } public class OverridingFields { public static void main(String[] av) { System.out.println("A's getAttr returns: " + new A().getAttr()); System.out.println("B's getAttr returns: " + new B().getAttr()); // Declared as A, instantiated as B, so gets B's version of things. A c = new B(); System.out.println("C's version of getAttr returns: " + c.getAttr()); } }
Output:
In A.getAttr
A's getAttr returns: 1
In B.getAttr
In A.getAttr
B's getAttr returns: 2
In B.getAttr
In A.getAttr
C's version of getAttr returns: 2
This was an example of how to override a super class field in a subclass in Java.