1. 程式人生 > >java內部類常見面試題彙總

java內部類常見面試題彙總

1.根據註釋填寫(1),(2),(3)處的程式碼

public class Test{
    public static void main(String[] args){
           // 初始化Bean1
           (1)
           bean1.I++;
           // 初始化Bean2
           (2)
           bean2.J++;
           //初始化Bean3
           (3)
           bean3.k++;
    }
    class Bean1{
           public int I = 0;
    }
 
    static class Bean2{
           public int J = 0;
    }
}
 
class Bean{
    class Bean3{
           public int k = 0;
    }
}

從前面可知,對於成員內部類,必須先產生外部類的例項化物件,才能產生內部類的例項化物件。而靜態內部類不用產生外部類的例項化物件即可產生內部類的例項化物件。

  建立靜態內部類物件的一般形式為:  外部類類名.內部類類名 xxx = new 外部類類名.內部類類名()

  建立成員內部類物件的一般形式為:  外部類類名.內部類類名 xxx = 外部類物件名.new 內部類類名()

因此,(1),(2),(3)處的程式碼分別為:

// 1
Test t=new Test();
Test.Bean1 b1=t.new Bean1();


// 2
Test.Bean2 b2=new Test.Bean2();

 
// 3
Bean b=new Bean();
Bean.Bean3 b3=b.new Bean3();

2.下面這段程式碼的輸出結果是什麼?
public class Test {
    public static void main(String[] args)  {
        Outter outter = new Outter();
        outter.new Inner().print();
    }
}
 
 
class Outter
{
    private int a = 1;
    class Inner {
        private int a = 2;
        public void print() {
            int a = 3;
            System.out.println("區域性變數:" + a);
            System.out.println("內部類變數:" + this.a);
            System.out.println("外部類變數:" + Outter.this.a);
        }
    }
}
結果:
3
2
1

內部類詳細學習: