1. 程式人生 > >JAVA內部類要點及面試題

JAVA內部類要點及面試題

(編輯整理中...)

QUESTION NO: 4 1. public class Outer{ 2. public void someOuterMethod() { 3. // Line 3 4. } 5. public class Inner{} 6. public static void main( String[]argv ) { 7. Outer o = new Outer(); 8. // Line 8 9. } 10. } Which instantiates an instance of Inner? A. new Inner(); // At line 3 B. new Inner(); // At line 8 C. new o.Inner(); // At line 8 D. new Outer.Inner(); // At line 8//new Outer().new Inner() 答案如下: public
class
Outer { publicvoid someOuterMethod() { // Line 3 new Inner();//放在這裡不出錯     } publicclass Inner {     } publicstaticvoid main(String[] argv) {        Outer o= new Outer(); // Line 8 //o不能夠被解釋成為一種型別,出錯 //new o.Inner(); /** *下面兩種用法,都報下面的錯誤: *NoenclosinginstanceoftypeOuterisaccessible. *Mustqualifytheallocation
withanenclosinginstance *oftypeOuter(e.g.x.newA()wherexisaninstanceofOuter) */ //new Outer.Inner(); //new Inner();           } }
public class Outer {
	private int num;

	public Outer() {}

	public Outer(int num) {
		this.num = num;
	}

	private class Inner {
		public Outer getOuter() {
			return Outer.this;
		}

		public Outer newOuter() {
			return new Outer();
		}
	}

	public static void main(String[] args) {
		Outer test = new Outer(5);
		Outer.Inner inner = test.new Inner();

		Outer outer = inner.getOuter();
		Outer outer2 = inner.newOuter();
		System.out.println(outer.num);
		System.out.println(outer2.num);
	}

}
輸出結果:            5            0