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