32. What will be the output of the following programs?
a)
interface A {
void m1(int x, double y);
}
abstract class B implements A {
public void m1(double x, int y){
System.out.println("One");
}
}
public class Test extends B {
public void m1(double x, int y){
System.out.println("Two");
super.m1(20.5, 20);
}
public void m1(int x, double y){
System.out.println("Three");
}
public static void main(String[] args){
Test t = new Test();
t.m1(20.5, 10);
t.m1(10, 5.5);
}
}
Ans: Output: Two, One, Three
b)
interface A {
void m1(A a);
}
abstract class B implements A {
void m1(B b){
System.out.println("One");
}
}
public class Test extends B {
public void m1(A a){
System.out.println("Two");
}
public void m1(B b){
System.out.println("Three");
}
public static void main(String[] args){
A a = new Test();
a.m1(new Test());
}
}
Ans: Output: Two
c)
interface A {
void m1(A a);
}
abstract class B implements A {
void m1(B b){
System.out.println("One");
}
}
public class Test extends B {
void m1(A a){
System.out.println("Two");
}
void m1(B b){
System.out.println("Three");
}
public static void main(String[] args){
A a = new Test();
a.m1(null);
}
}
Ans: No, IllegalAcceessError exception because we cannot reduce the visibility of inherited method from interface A.
d)
interface A {
void m1();
}
abstract class B implements A {
public void m1(){
System.out.println("One");
}
}
public class Test extends B {
public void m1(){
System.out.println("Two");
super.m1();
}
public static void main(String[] args){
A a = new Test();
a.m1();
B b = new Test();
b.m1();
}
}
Ans: Output: Two, One, Two, One
e)
interface A {
int m1();
}
class B implements A {
public int m1(){
return 20;
}
}
public class C implements A {
public int m1(){
return 30;
}
}
public class Test {
public static void main(String[] args){
A a = new B();
int aa = a.m1();
System.out.println(aa);
C c = new C();
int cc = c.m1();
System.out.println(cc);
}
}
Ans: Output: 20, 30.
f)
interface A {
A m1();
}
class B implements A {
public A m1(){
System.out.println("Red");
return null;
}
}
public class C implements A {
public A m1(){
System.out.println("Orange");
return null;
}
}
public class Test {
public static void main(String[] args){
A a = new B();
a.m1();
C c = new C();
c.m1();
}
}
Ans: Output: Red, Orange.
33. Will the below code compile successfully? If yes, what will be the output of the following program?
interface A {
A m1();
}
class B implements A {
public B m1(){
System.out.println("Red");
return new B();
}
}
public class C implements A {
public C m1(){
System.out.println("Orange");
return new C();
}
}
public class Test {
public static void main(String[] args){
A a;
a = new B();
a.m1();
a = new C();
a.m1();
}
}
Ans: Yes, the code will be successfully compiled. The result is Red, Orange.
34. What will be the output of the following program?
interface A {
int x = 20;
interface B {
int x = 30;
}
}
class C implements A {
int x = 40;
}
public class D implements A.B {
int x = 50;
}
public class Test {
public static void main(String[] args){
System.out.println(A.x);
System.out.println(A.B.x);
C c = new C();
System.out.println(c.x);
D d = new D();
System.out.println(d.x);
}
}
Ans: Output: 20, 30, 40, 50.
35. Identify the error inside the following code and correct it. What will be the output after the correction of error?
interface A {
void m1();
interface B {
void m1();
}
}
class C implements A.B {
public void m1(){
System.out.println("Green");
}
}
public class Test {
public static void main(String[] args){
A a = new C();
a.m1();
}
}
Ans: This code will generate compilation error because class C is implementing inner interface, not outer interface. But the reference of a is a type of outer interface. The correct code is as follows:
A.B ab = new C();
After correction, the output is Green.
36. Is there any error in the following code? If yes, correct it.
interface A {
void m1();
interface B {
void m2();
}
}
class C implements A, A.B {
public void m1(){
System.out.println("Green");
}
}
Ans: Yes, there is an error in the above code because class C must implement inherited abstract method from inner interface A.B.
37. Will the code compile successfully? If yes, what will be the output?
interface A {
void m1();
interface B {
void m2();
}
}
class C implements A, A.B {
public void m1(){
System.out.println("Green");
}
public void m2(){
System.out.println("Red");
}
}
public class Test {
public static void main(String[] args){
C c = new C();
c.m1();
c.m2();
}
}
Ans: Yes, the above code will be compiled successfully. The output is Green, Red.




