1. 程式人生 > >關於內部類 外部類面試題

關於內部類 外部類面試題

1 關於內部類 外部類的成員訪問
需求:
要求請填空分別輸出30,20,10。
外部類和內部類沒有繼承關係!

題目程式碼

class Outer7 {
    public int num = 10;

    class Inner7 {
        public int num = 20;
        public void show() {
            int num = 30;


        }
    }
}
public class InnerClassTest {
    public static void main(String[] args) {
        Outer7.Inner7 oi = new
Outer7().new Inner7(); oi.show(); } }

答案
public void show() {
int num = 30;
System.out.println(num);//區域性變數訪問 30

    System.out.println(new Inner7().num); //或者                  
    System.out.println(this.num); 20
    System.out.println(new Outer7().num);//或者 Outer7.this.num;10

    }

2需求:
匿名內部類面試題:
按照要求,補齊程式碼
interface Inter { void show(); }
class Outer { //補齊程式碼 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制檯輸出”HelloWorld”

程式碼答案
 interface Interr2{
    public abstract void show();
}
class Outerr2{
    public static Interr2  method(){
        Interr2 i=new Interr2() {

            @Override
            public void show() {
                // TODO 自動生成的方法存根
                System.out.println(" hello word");
            }
        };//因為是Interr2 i=new Interr2();
        return i;
    }
}
public class mianshi {

    public static void main(String[] args) {
        // TODO 自動生成的方法存根

        Outerr2.method().show();
        //Outerr2.method().show();分析:
        //Outerr2.method() 一個類類名可以呼叫方法,則該方法是靜態的,一個方法又.另外一個方法
        //坑定方法返回了一個物件,呼叫的該show方法不是Outerr2類的,而是接口裡面的,就必須想到內部類

    }

}