1. 程式人生 > >Java入門習題(五)——內部類

Java入門習題(五)——內部類

Java入門習題

內部類部分

1,請使用匿名內部類補足程式碼

interface Inter{
    void show(int a,int b);
    void fun();
}
class Demo{
    public static void main(String [] args){
        //補足程式碼!!!
    }
}

參考答案:

    public static void main(String [] args){
        Inter inter=new Inter(){
            public void show
(int a,int b){} public void fun(){} }; inter.show(1,2); inter.fun(); }

2,請簡述下列程式執行結果

class A{
    int y=6;
    class Inner{
        static int y=3;
        void show(){
            System.out.println(y);
        }
    }
}
class Demo{
    public static void
main(String [] args){ A.Inner inner=new A().new Inner(); inner.show(); } }

參考答案:

編譯失敗,原因:非靜態內部類不能定義靜態成員

3,請分析以下程式碼能否被放置在相應的位置上

class Demo{
    public void func(){
        //位置1
    }
    class Inner{}
    public static void main(String [] args){
        Demo d=new Demo();
        //位置2
} }
A.位置1:new Inner();
B.位置2:new Inner();
C.位置2:new d.Inner();
A.位置2:new Demo.Inner();

參考答案:

A 正確
B 錯誤:成員內部類(非靜態內部類)不能被靜態方法呼叫
C、D 錯誤:正確的建立格式應為 Inner inner=t.new Inner();
解析 成員內部類與成員方法和成員變數一樣,應被外部類物件呼叫,C選項的方式不符合語法規範,D選項錯誤的原因是Inner是非靜態的

4,補全程式碼

interface Inter{
    void func();
}
class Demo{
    public static void main(String [] args){
        //使用匿名內部類補足程式碼
    }
    void show(Inter inter){
        t.func();
    }
}

僅供參考:

public static void main(String [] args){
    new Demo().show(new Inter(){
        public void func(){
            System.out.println("hello world");
        }
    });
}