• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Inner class question in Sahir Shah's Mock Exam

 
Harry Chou
Greenhorn
Posts: 4
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In Sahir Shah's Mock Exam
http://www.geocities.com/sahirshah/applets/mocktest.html
III
1. Consider the following code
public class Outer{
class Inner{}
public void methodA()
{
/////
}
}
What are the valid ways to create an instance of the inner class from methodA ?
1. Inner i = new Inner();
2. Outer.Inner i = new Inner();
3. Outer.Inner i = new Outer.Inner();
4. Inner i = new Outer.Inner();
5. Outer.Inner i = new Outer().new Inner();
6 Object o = new Outer().new Inner();
The answer given is 1, 2, 5, 6
but when run in JDK, all are valid statement to create an instance of inner class.
My code is like this:
class Outer
{
class Inner {int a = 2;}

public void aMethod(){
Inner i = new Inner(); // this.Inner i = new this.Inner()
System.err.println(i.a);
Outer.Inner i2 = new Inner();
System.err.println(i2.a);
Outer.Inner i3 = new Outer.Inner();
System.err.println(i3.a);
Inner i4 = new Outer.Inner();
System.err.println(i4.a);

Outer.Inner i5 = new Outer().new Inner();
System.err.println(i5.a);

Object o = new Outer().new Inner();
System.err.println(((Inner) o).a);
}
public static void main(String[] args){
Outer o = new Outer();
o.aMethod();
}
}
Can somebody give me some clue?
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic