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,
Athat 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
BextendsAand 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
Aand call itsgetAttr()method. - We also create a new instance of
Bclass and call itsgetAttr()method. - Then we create a new
Aobject, usingBconstructor 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.

