(個人筆記)2018-11-09 包、訪問許可權、抽象類、介面、final
目錄
包
包-三大作用
1. 區分相同名字的類
2. 當類很多事,可以很多的管理類
3. 控制訪問範圍
包- 打包命令
package 包名
包-命名規範
字母小寫
包-常用的包
java.lang.*包 自動引入
java.util.*包 工具包
java.net.*包 網路開發包
java.awt.*包 視窗工具包
包-引入包
import 包
---------------------------------------------------------------------------------------------------------------
訪問許可權
注意:繼承是可以跨包繼承,就像匯入其他包,使用其方法
----------------------------------------------------------------------------------------------------------------
抽象類
1.抽象類存在的原因:父類方法的不確定性
(父類中的方法,父類的該方法的具體實現沒意義,每種子類的實現都不同)
2. 抽象類不能例項化,因為其中的抽象方法沒有實現。
----------------------------------------------------------------------------------------------------------------
介面
1. 介面中可以有變數,但變數不能用private和protected,只能使用public
a. 介面中的變數,本質上都是static的,而且是final,不管你加不加static、final修飾
b.在Java開發中,我們經常把常用的變數,定義在介面中,作為全域性變數使用。
訪問形式:介面名,變數名
2. 介面不可以繼承類,但是可以繼承介面
3. 介面是更加抽象的抽象類,抽象類裡的方法可以有方法體,接口裡的所有方法都沒有方法體,介面體現了程式設計的多型和高內聚低耦合的設計思想。
----------------------------------------------------------------------------------------------------------------
實現介面 VS 繼承類
Java的繼承是單繼承,也就設計一個類最多隻能有一個父類,這種單繼承的機制可以保證類的純潔性,比c++中的多繼承機制簡潔。但是不可否認,對子類功能的擴充套件有一定影響。
1. 實現介面可以看作是 對繼承的一種補充
還有一點,繼承是層級式的,不太靈活(即一個類的改變會導致好幾個類同時要做修改)。
(如修改類1,類2、3、4、5都要做修改)這種結構修改某個類就會打破這種繼承的平衡,而介面就沒有這樣的麻煩,因為它只針對實現介面的類才起作用。
2. 所以,實現介面可以在不打破繼承關係的前提下,對某個類功能擴充套件,非常靈活。
----------------------------------------------------------------------------------------------------------------
final
1.可以修飾變數、類或方法
2. 當不希望父類的某個方法被子類覆蓋時,可以用final關鍵字修飾
3. 當不希望類的某個變數的值被修改,可以用final修飾。
a. 使用final修飾後,定義時必須賦初值。
b. final修飾的變數又叫常量,變數名一般寫成"xxx_xxx_xxx"
4. 當不希望類被繼承時,可以用final修飾。
5. 什麼時候用
a. 因為安全的考慮,類的某個方法不允許修改。
b. 類不被其他類繼承
c. 某些變數值是固定不變的,比如圓周率3.1415926