Hi,
This problem is from Jtips mock exam # 1. Answer for this is 4.
public class Superclass {
public static void main(
String[] args) {
System.out.println(new Subclass().methodA());
}
Superclass() {
System.out.println("SuperClass Constructor Executed");
}
private int methodB() {
System.out.println("methodB in Superclass");
return 9;
}
int methodA() {
System.out.println("methodA in Superclass");
return methodB();
}
}
class Subclass extends Superclass {
Subclass() {
System.out.println("SubClass Constructor Executed");
}
protected int methodB() {
System.out.println("methodB in Subclass");
return 1;
}
}
What is the result ?
1.Prints
a.SubClass Constructor Executed
b.methodA in Superclass
c.methodB in Superclass
d. 1
2.Prints
a.SubClass Constructor Executed
b.SuperClass Constructor Executed
b.methodA in Superclass
c.methodB in Superclass
d. 1
3. Prints
a.SuperClass Constructor Executed
b.SubClass Constructor Executed
b.methodA in Superclass
c.methodB in Subclass
d. 1
4.Prints
a.SuperClass Constructor Executed
b.SubClass Constructor Executed
b.methodA in Superclass
c.methodB in Superclass
d. 9
5.Compile-time error occurs.
It is calling methodB() of superclass and prints 9.
If I remove private modifier or override methodA() in Subclass it calls methodB() of Subclass and prints 1.
Can any one explain.
Regards,
Usha