What is the result of the following code snippet?
class Parent {
private int x = 10;
}
class Child extends Parent {
int x = 20;
void display() {
System.out.println(super.x + " " + x);
}
}
public class Main {
public static void main(String[] args) {
Child obj = new Child();
obj.display();
}
}
private int x = 10;
}
class Child extends Parent {
int x = 20;
void display() {
System.out.println(super.x + " " + x);
}
}
public class Main {
public static void main(String[] args) {
Child obj = new Child();
obj.display();
}
}
A. 20 10
B. 10 20
C. Runtime exception
D. None of These
Answer: Option B
Solution(By Examveda Team)
The given code snippet involves inheritance in Java. It defines two classes:Parent
and Child
. The Child
class extends the Parent
class, which means it inherits its fields and methods.Inside the
Parent
class, there is a private integer variable x
with a value of 10. In the Child
class, there is another integer variable x
with a value of 20. Additionally, the Child
class has a display()
method that prints the values of super.x
and x
.In Java, when you access a variable with the
super
keyword, it refers to the variable of the superclass. When you access a variable without super
, it refers to the variable of the current class.Now, let's analyze what happens in the
display()
method:-
super.x
refers to the x
variable in the Parent
class, which is 10.-
x
refers to the x
variable in the Child
class, which is 20.So, the
display()
method will print "10 20" because it first accesses the x
variable of the superclass (Parent
) using super.x
and then accesses the x
variable of the current class (Child
) directly.Therefore, the correct answer is:
Option B: 10 20
compile time error. x in super class is private