學習編程也有3年了,還是對面向對象中的1些基礎的知識了解的不是很深入,最近抽出時間又1次鞏固了1下,特此總結1下。
1.為何靜態方法沒法訪問非靜態成員
由于靜態方法屬于類,非靜態成員屬于對象,所以靜態方法將不知道關于其所屬類的對象的信息
2.為何非靜態方法可以訪問靜態成員
非靜態成員的生命周期被靜態成員生命周期包括,因此當非靜態成員存在的時候,靜態成員絕對存在。故非靜態成員在任什么時候候都可以訪問靜態成員
3.Final變量的注意事項
1.final的成員變量必須為其初始化
2.對原始類型,1旦賦值以后,該值就不能修改,
3.對援用類型,1旦賦值以后,將不能重新來援用另外1個對象,但是可以修改其援用對象的成員變量
4.final局部變量,可以只聲明而不初始化,1旦初始化值不能被修改
5.當final修飾類時,其含義是該類不能再被拆分,任何其他類都不能繼承final修飾的類
6.一樣方法修飾的方法,也是這樣,子類將不能重寫該方法,只能繼承
4.為何要有靜態變量的存在
由于總有1些方法,行動與結果不依賴于對象的狀態
5.成員訪問修飾符
可見性 |
public |
protected |
默許 |
private |
對同1個類 |
是 |
是 |
是 |
是 |
同包中的任何類 |
是 |
是 |
是 |
否 |
包外所有非子類 |
是 |
否 |
否 |
否 |
包中子類繼承訪問 |
是 |
是 |
是 |
否 |
包外子類繼承訪問 |
是 |
是 |
否 |
否 |
6.抽象類與抽象方法
1.抽象方法只能存在于抽象的類中,非抽象類中不能存在抽象方法
2.抽象方法的聲明,是沒有方法體的。最后用分號結束。
3.抽象類中的非抽象方法常常是抽象類所有未來子類所具有的。且不會由于子類的不同而具體實現不同的方法。
4.當某類繼承自抽象類時,如果其本身不是抽象類,則必須實現所繼承抽象類中的抽象方法。
5.抽象類只能繼承1個父類,但是可以實現多個來自任何地方的接口
6.抽象類中必須有1個無參數的構造函數,默許會有1個,但是如果定義新的話,會覆蓋。
8.接口
1.接口中只能定義常量屬性,這樣才能保證實現接口的任何類都可以訪問相同的屬性,不能動態將其值隨便修改。
2.接口中方法與不能用static和final修飾
3.接口只能繼承接口,不能繼承類
9.構造器履行流程
1.1旦編寫了任意1個構造器,不管是不是是有參數的構造器,系統都不會再提供默許的無參數的構造器。
2.構造器是不能被繼承的
3.創建子類時,會走父類中默許的構造函數,不管子類創建的時用的是哪一個構造函數