Friday, 11 September 2009

Java Certification Question 0092

What will happen when you attempt to compile and run this program

public class Outer

public String name = "Outer";

public static void main(String argv[]){
Inner i = new Inner();
i.showName();
}//End of main

private class Inner{
String name =new String("Inner");
void showName(){
System.out.println(name);
}
}//End of Inner class
}

1) Compile and run with output of "Outer"
2) Compile and run with output of "Inner"
3) Compile time error because Inner is declared as private
4) Compile time error because of the line creating the instance of Inner





Answer)

4) Compile time error because of the line creating the instance of Inner


This looks like a question about inner classes but it is also a reference to the fact that the main method is static and thus you cannot directly access a non static method. The line causing the error could be fixed by changing it to say

Inner i = new Outer().new Inner();

Then the code would compile and run producing the output "Inner"



No comments:

Post a Comment