JAVA基礎知識
JAVA的面向對象(obtion object)
Java面向對象首先要理清對象和類的關係:
1. 類是對象的模板,對象是類的體現;
現在把一個類比較一張汽車設計圖紙,對象比做剛按照這張圖紙製造出來的汽車。
2. 一個類有很多對象,對象不能改變類的內容。
一張圖紙能夠造出很多汽車,,其中的一輛車進行了改裝,但是沒能改變設計圖紙,所以後面製造出來的汽車還是沒有受到影響。
3.創造一個類(類名首字母大寫)
類名 對象名 = New 類名();
Java面向對象主要分爲繼承、接口、多態
繼承:
1. 表示繼承了父類的所有的東西,除了父類的private屬性和方法,但是不能對其改變,只能在其基礎上進行發展。所以沒有敗家子的出現。
2. 繼承關鍵字extends
Class 子類 extends 父類{
}
接口:
1. 接口其實是一個方法申明的集合,裏面只能放public static final 定義的常量(常量名全大寫字母)和沒有被實現的方法。接口只能被類實現,接口可以繼承於接口
2. 實現一個接口,必須實現其中的所有方法,使用關鍵字implements.
Class 類名 implements 接口{
}
多態:
多態的體現主要分爲以下兩方面:
1. overload和overriod
(1)這裏首先介紹以下overload是方法的重載,重載的要求是:方法名相同,參數的類型和個數不同。與返回值沒有關係。在調用時主要由參數來判斷調用的是哪個重載方法。
(2)然而overriod是方法的覆寫,覆寫的要求是:方法名相同,參數的個數個類型相同,返回類型必須相同。但是記住覆寫發有繼承關係的兩個類當中。如果一個方法被覆寫,子類對像在調用時一定是調用被覆寫的方法。
2.轉型問題
(1)向上轉型
父類 對象 = new 子類---------à 自動轉型
(2)向下轉型
子類 對象a = (子類)對象b---à 強制轉型
注意:向下轉型需要注意的是,向下轉型對象b必須是子類的實例,所以一般使用instanceof來判斷b對象是否是子類的實例。
If(b instanceof 類名)
{
子類 對象a = (子類)對象b
}
還要注意的是一般使用時,先把子類向上轉型以後再向下轉型。要不使用instanceof這樣不會發生轉型錯誤。
現在看看抽象類和接口的區別:
抽象類裏面可以有抽象的方法也可以有實現的方法,可以有常量也可以有變量。抽象類可以被單繼承。
接口裏面只能放抽象的方法,和常量,接口可以被實現。也可以被接口多繼承。接口中不能使用static關鍵字。
看看訪問權限的差別:
本類中 |
本包中 |
子類中 |
其他 |
|
PUBLIC |
可以 |
可以 |
可以 |
可以 |
PROTECT |
可以 |
可以 |
可以 |
|
默認類型 |
可以 |
可以 |
||
PRIVATE |
可以 |
需要記住的一些關於static,private,final的細節:
有關鍵字static,private,final的方法不能被覆寫。
其中static的方法是不能被覆寫的,如果在子類中還有一個static的方法想覆寫它,則不叫覆寫,叫做重新定義。所以更具對象來調用相應的方法。
Private的方法不能被覆寫,因爲private的方法是父類自己的東西,不能被子類得到。在這裏說明一下,覆寫時要注意權限問題,權限只能放大不能縮小,不然會發生編譯錯誤。
Final定義的方法不能被覆寫,因爲final關鍵字一般定義固定的東西,比如一個類如果是final定義的則不能被繼承。
Static定義的靜態變量,是分配了內存空間的,所以,static變量是全局變量,在它定義後的任何修改都將改變它的值。
Static定義的靜態區域,優先於主方法。
寫的不好的地方,請大家提出來,好及時的改正,希望在今後大家一起進入嵌入式的學習,相互交流,共同進步,下次我會把簡單字符驅動的總結和大家一起分享,有什麼不明白的可以和我一起交流。