Given:
public class SampleClass {
public static void main(String[] args) {
SampleClass sc, scA, scB;
sc = new SampleClass();
scA = new SampleClassA();
scB = new SampleClassB();
System.out.println(“Hash is : ” +
sc.getHash() + “, ” + scA.getHash() + “, ” + scB.getHash());
}
public int getHash() {
return 111111;
}
}
class SampleClassA extends SampleClass {
public long getHash() {
return 44444444;
}
}
class SampleClassB extends SampleClass {
public long getHash() {
return 999999999;
}
}
What is the result?
A.
Compilation fails
B.
An exception is thrown at runtime
C.
There is no result because this is not correct way to determine the hash code
D.
Hash is: 111111, 44444444, 999999999
Explanation:
The compilation fails as SampleClassA and SampleClassB cannot override
SampleClass because the return type of SampleClass is int, while the return type of
SampleClassA and SampleClassB is long.
Note: If all three classes had the same return type the output would be:
Hash is : 111111, 44444444, 999999999