1. 多態中成員的特點:
1.1:成員變量:編譯時期能訪問哪些變量看父類,執行結果還看父類
1.2:成員函數:編譯時期能訪問哪些函數看父類,執行結果看子類(前提是子類重寫了父類中的方法,沒有重寫則看父類)
1.3:靜態成員函數:編譯執行都看父類
2.多態:多種形態
a.多態:父類類型的引用指向了子類類型的對象
b.多態的前提條件:必須存在繼承或實現
c.多態的弊端:把子類類型的對象看成父類類型,那麼就只能使用父類中定義的功能
3.接口的好處:(接口可以解決java的單繼承問題接口可以多實現,實現多個接口不會出現調用的不確定性,因爲接口中的方法都是抽象的,都沒有實現在創建子類對象調用重寫的方法時,很明確就是在調用重寫後的方法)
a:可以提高程序的擴展性
b:接口就是一些對外暴露的規則
c:可以降低類之間的依賴關係
4.抽象
抽象類的特點:
a:抽象類不能創建對象,因爲含有未實現的抽象方法
b:繼承抽象類的子類沒有實現抽象類中的抽象方法,那麼這個子類也是抽象類
A:抽象類一定是父類嗎?
一定是
B:抽象類有構造方法嗎?
有構造方法,用於子類對象的初始化
抽象類和普通類的相同點:都是類,都是用來描述事物的
不同點:1:抽象類不能創建對象,普通類可以
2:抽象類可以含有抽象方法,普通類不可以
C:abstract不能和哪些關鍵字同時使用?
1:final:抽象類必須可以被繼承,final修飾的類不能被繼承
2:static:抽象方法不能通過類名調用,靜態方法可以通過類名直接調用
3:private:抽象的方法必須可以被子類重寫,但是私有的方法不能被子類覆蓋
D:抽象類一定含有抽象方法嗎?
不一定,當希望一個類不能被創建對象時,可以把該類修飾爲abstract的
5.內部類
內部類和外部類的聯繫:內部類可以訪問外部類所有的方法和屬性,如果內部類和外部類有相同的成員方法和成員屬性,內部類的成員方法調用要優先於外部類(即內部類的優先級要高於內部類:注意:只限於類內部,在主方法內,內部類的對象不能訪問外部類的成員方法和屬性),外部類只能訪問內部類的靜態常量或者通過創建內部類來訪問內部類的成員方法和屬性。
內部類定義的靜態常量可以全局訪問。
創建內部類
第一種方式
假設A是外部類,B是內部類
A a=new A();
A.B b=a.new B();
或者用A類的匿名對象來訪問
A.Bb=new A().new B();
普通類的權限有public和default兩種
而內部類有四種
6.super不是引用也不是函數,是一種語法。
子類調用父類的構造函數必須由super調用。Super必須在子類構造函數的第一個位置。
7.異常
try {}catch{}finally{}
的工作原理
1)try{} 把可能出現異常的語句包起來,如果出現了異常,就跳出這個try {} 語句塊,到後邊處理這種異常的地方進行處理,如果一直沒有處理,就拋給了上級
2)catch{}語句用來捕獲異常,
a)try {} 後面可以跟多個catch{}
b)前面的catch{} 捕獲的異常,應該是後邊catch{}語句捕獲異常的子類,否則編譯通不過(JAVA不允許出現廢話)
c) catch{}語句裏面一般對異常的處理
Exception e=new Exception(“出錯”);
e.getMessage();//打印出“出錯”
e.printStackTrace();//打印出異常所屬的類,以及異常信息,和跟蹤的棧信息
4)finally{}的代碼不管出不出異常,都會執行。
a) finally{}語句一般用來釋放資源 。
b)finally{}語句一定會執行,除非System.exit(0);
c)如果有return語句,當正常運行時,先執行finally,然後再return
當發生異常後,先執行catch,然後finally及其它語句
d)try可以無cath語句,直接跟finally語句:try {}finally{}//用在throws 異常的地方
e)一個方法中只能有一個finally
f)finally中不要用return,會覆蓋正常的返回結果,有可能丟失異常
5)這三個代碼塊可以互相嵌套