1、重寫<Override>,重載<Overloading>
重寫相對於父類,重載下相對於本類,都是Java多態的一種表現形式。
2、java內部類
剛開始學,沒必要對每個功能都細究,自頂向下,羅列如下:
<1>內部類定義:顧名思義,在類內部定義的類便是一個內部類
<2>內部類的簡單例子:
public class OutClass(){ public class InsideClass() {
... }}
<3>內部類的使用:(通過一個內部類來訪問外部類成員變數)
public class Test2{
private int num ; public Test2(){ } public Test2(int num){ this.num = num; } private class Inner{ public Test2 getTest2(){ return Test2.this; } public Test2 newTest2(){ return new Test2(); } } public static void main(String [] args){ Test2 test = new Test2(5); Test2.Inner inner = test.new Inner(); Test2 test2 = inner.getTest2(); Test2 test3 = inner.newTest2(); System.out.println(test2.num); System.out.println(test3.num); }
}
輸出結果為:5 0
解釋:只要通過外部類建立了一個內部類對象,內部類便與外部類有了一定的關聯,無須限制便可訪問外部類成員變數、方法
用以下方法:外部類.this;
原理:在外部類建立內部類對象時,內部類會秘密的捕獲一個指向外部類的引用,具體機制是編譯器的問題,初期沒必要細究
<4>內部類的封裝與隱藏實現細節:
public class Example { private class InsideClass implements InterfaceTest { public void test() { System.out.println("This is test"); } } public InterfaceTest getIn() { return new InsideClass(); } }
//程式測試 public class TestExample { public static void main(String args[]) { Example a=new Example(); InterfaceTest a1=a.getIn(); a1.test(); } }
解釋:很明顯,Example類的InterfaceTest()方法返回的是一個,InsideClass對象,加上InsideClass又是私人的所以,我們如果不認真看代碼,根本
看不到InsideClass的具體實現,這個備用,貌似比較高端
OK,就到這!