認識Java的API
ArrayList
ArrayList是java函數庫的一個類。
ArrayList不能存primitive主數據類型,但是可以用包裝類包裝一下就行,而且java5之後自動進行包裝。
ArrayList與數組的區別:
1、創建不用指定大小
2、插入不用指定位置
remove indexof add isempty
布爾表達式
短運算符(&&)
下面是一個小技巧,可以避免調用內容爲null的指針變量的方法
if(refvar != null && refvar.isVaildType()){ //執行操作 }
長運算符(&,|)
通常用來做位的運算
使用函數庫(Java API)
要使用API中的類,你必須知道它被放在哪個包中。
必須指明程序代碼中使用的類的完整名稱,可以有兩種方法:
Import:例如:Import java.util.ArrayList
Type 或者在代碼中聲明,太麻煩了
包的一個重要作用就是錯開相同命名的類,可以通過不同的包名來區分
javax開頭的包,以前是拓展,現在是標準了
不必import進String類或System類:因爲java.lang是個預先被引用的包。這倆是獨一無二的class
繼承與多態
繼承(extends)
繼承的關係意味着子類繼承父類的方法。當我們提及類的“類的成員”,意思是實例變量和方法。
子類的方法可以對父類的方法進行覆蓋override
子類方法的調用一定是調層次樹最下端的
A是B的父類,B是C的父類,那麼A是C的父類
關於判斷繼承設計是否是正確的,要使用IS-A(感覺還是不太懂啊)
子類中打算引用父類的方法然後再加上額外的行爲:
public void roam(){
super.roam(); //程序會先執行super版的roam()然後再回來執行sub版自定義的行爲或功能
//my own roam stuff
}
繼承讓你可以確保某個父型之下的所有類都會有父型所持有的全部方法
多態
在多態下,引用與對象可以是不同的類型。
Animal mydog = new Dog();//引用變量的類型是Animal,而對象是Dog
運用多態時,引用類型可以是實際對象類型的父類
參數和返回類型也可以是多態!
一個類不能被子類繼承:(內部類、3種方法)
1、存取控制,不標記公有,這樣只能被同一個包的類繼承
2、使用final修飾符,表示繼承樹的末端,不能被繼承
3、讓類只擁有private的構造程序
覆蓋
如果你希望類裏的特定方法不能被覆蓋,可以加上final修飾符
覆蓋:方法必須和父類有相同的參數和返回值類型或其子類,不然無法覆蓋;方法的存取權限也必須相同或者更爲開放,不能把公有的聲明爲私有的。
重載(overload)
重載的方法只是剛好有相同的名字的不同的方法,與繼承或多態無關。
返回類型可以不同,只要使用的不同的參數即可。
可以更改存取權限,
深入多態
抽象類
關鍵詞abstract
抽象類代表沒有人能夠創建出該類的實例,除了被繼承過,就沒有其他的用途了
抽象的方法:代表此方法一定要被覆蓋過。抽象的方法沒有實體!如果你聲明瞭一個抽象的方法,那麼該類也必須標記爲抽象的。你不能在非抽象類中擁有抽象的方法。
子類必須實現父類的抽象方法
Object
所有類都是從Object中繼承出來的
沒有直接繼承過其他類的類會是隱含的繼承對象。
Object不是抽象類
Object類主要有兩個作用:1、多態,讓方法可以應付多種類型的機制;2、用在線程的同步化上面
任何從ArrayList<Object>取出的東西都會被當做Object類型的引用而不管它原來是什麼,但是可以強轉回來
接口(關鍵詞:interface)
java的接口的所有方法都是抽象的,
接口解決了java不允許繼承多個父類的問題
不同的繼承樹的類可以有相同的接口
類可以實現多個接口
super關鍵字可以讓子類調用父類的方法