類的高階特性編碼實現
//靜態內部類,可用於方便測試 /* public class StaticInnerClass{ int x=100; static class Inner{ void doitInner(){ } public static void main(String args[]){ System.out.println("a"); } } } */ //匿名內部類 /* interface OutInterface { } class OuterClass{ public OutInterface doit(){ return new OutInterface() { private int i=0; public int getValue(){ return i; } }; } } */ //this 指代的是當前物件 /* public class TheSameName{ private int x; private class Inner{ private int x=9; public void doit(int x){ x++; this.x++; TheSameName.this.x++; } } */ //通過內部類可以對類的私有成員方法進行操作 /* public class OutClass { public static void main(String args[]){ OutClass outClass = new OutClass(); OutClass.innerClass inner = outClass.doit(); System.out.println(inner.y); OutClass.innerClass inner1=outClass.new innerClass(); System.out.println(inner1.y=9); } innerClass inner = new innerClass(); public void out(){ inner.inf(); } class innerClass{ public innerClass() { } public void inf(){ } int y=0; } public innerClass doit() { inner.y=4; return inner; } } */ //內部類向上轉型為介面 /* interface OutInterface{ public void f(); } public class InerfaceInner{ public static void main(String args[]){ OuterClass2 out = new OuterClass2(); OutInterface outinter = out.doit(); outinter.f(); } } class OuterClass2{ private class InnerClass implements OutInterface{ InnerClass(String s){ System.out.println(s); }
@Override public void f() { // TODO Auto-generated method stub System.out.println("訪問內部類中的f()方法"); } } public OutInterface doit(){ return new InnerClass("訪問內部類方法"); } } */