面向對象進階
1. 包
package: 組織文件的作用。將程序中在邏輯上具有關聯(lián)關系的文件組織在一起。
在一個類中,使用另外一個包中的類:
1、使用類的全限定名
全限定名:從最層的包開始,一層層的向我們想要使用的文件進行定位。
例如 com.qianfeng.aexercise.two.Person
2、使用關鍵字 import,導入想要使用的資源文件
import java.util.Arrays 導入Arrays類
import java.util.* 導入java.util包下面所有的內(nèi)容
2. this關鍵字
this: 代表對當前對象的引用
this只能夠用在非靜態(tài)方法和構造方法中。
1、用在非靜態(tài)方法中: 哪一個對象調(diào)用這個方法, this就是誰。
2、用在構造方法中:
1、表示對當前對象的引用: 即將被實例化的對象。
2、this() 調(diào)用當前類中其他的構造方法
this的省略規(guī)則:
其實,所有的屬性、方法在進行訪問的時候,都必須要有一個訪問主體。
但是在某些情況下,訪問主體可以省略。
省略的規(guī)則很簡單:
如果省略掉之后,對程序沒有任何的影響,可以省略。
3. 構造方法
1、構造方法的定義
1、沒有用來修飾構造方法的其他的修飾符
2、構造方法沒有返回值
? 這里所謂的沒有返回值,指的并不是返回值類型是void,而是返回值類型部分不要寫!
3、方法名必須和類名相同
2、構造方法的調(diào)用
1、構造方法不能夠顯式的被類或者對象調(diào)用
2、構造方法的調(diào)用是發(fā)生在對象被實例化的時候
? 實例化對象的過程中,會自動的調(diào)用構造方法。
3、構造方法的實際使用意義
1、構造方法作為一個對象生命周期中的第一個方法,一般情況下,我們會對對象的屬性進行初始化的賦值
4、在構造方法中調(diào)用當前類的其他的構造方法
1、使用 this()
2、通過實參來區(qū)分具體調(diào)用哪一個構造方法
3、this() 調(diào)用構造方法,這一條語句必須是構造方法中的第一行語句
5、構造方法中的自動提供的原則
1、如果一個類中沒有寫構造方法,則這個類中會自動的提供一個public權限的無參構造方法
2、如果一個類中寫構造方法了,此時系統(tǒng)將不再默認提供任何的構造方法
? 如果沒有特殊需求,在添加了有參構造的同時,自己把無參構造也補上
6、析構方法
1、析構方法是一個對象生命周期中的最后一環(huán)。
4. 代碼段
分為 靜態(tài)代碼段 和 非靜態(tài)代碼段(構造代碼段)
1、他們都是直接寫在類中的代碼段,使用static修飾的代碼段叫做靜態(tài)代碼段,沒有使用static修飾的代碼段叫做非靜態(tài)代碼段,或者叫做構造代碼段
2、執(zhí)行時機:
? 2.1、靜態(tài)代碼段:
? 當這個類第一次被加載到內(nèi)存中的時候調(diào)用。指的是第一次在程序中使用到這個類(實例化對象、調(diào)用靜態(tài)方法、靜態(tài)屬性。。。)
? 2.2、構造代碼段:
? 當實例化對象對象的時候,執(zhí)行構造代碼段。
? 在實例化對象的時候,先執(zhí)行構造代碼段,然后再執(zhí)行構造方法。
3、無論是靜態(tài)代碼段還是構造代碼段,都可以出現(xiàn)多次。如果出現(xiàn)了多次,則這些代碼段之間執(zhí)行的先后順序是,按照書寫順序執(zhí)行。先寫誰,先執(zhí)行誰。
5. private關鍵字與屬性的封裝
在我們之前的程序設計中,有某些屬性,我們是不希望直接暴露給外界的。
private
是訪問權限修飾符的其中之一,表示私有的權限。被private修飾的屬性和方法,只能在當前的類中訪問。
屬性的封裝
對于某些屬性,如果直接暴露給外界,則在進行訪問的時候,進行的賦值操作,可能并不是我們想要的值。
為了解決這個問題,可以直接將這個屬性私有化起來,此時外界將不能再直接訪問這個屬性。但是為了能讓外界繼續(xù)操作這個屬性,我們需要提供用來操作屬性的方法。
JavaBean規(guī)范:理論上來講,每個屬性都需要進行封裝。