使用到的修飾符:private,不用修飾符(default),protected,public,java
private:當前類訪問權限,適合把屬性隱藏在類的內部,只能經過方法訪問。(通常用來隱藏)app
default:包訪問權限,只要本身所屬的這包下的其餘類都能訪問。ide
protected:子類訪問權限,能夠相同包,或者不一樣包訪問。通常用於子類重寫。ui
public:公共屬性,任何類均可以訪問。(通常用來暴露)this
注:由此能夠解釋爲何局部變量不用修飾符?由於其局部變量的做用域已經定了,就在方法,或者代碼塊內,因此不須要額外的修飾符限定其做用域。spa
封裝方法:用setter _ _ getter方法進行隱藏的屬性的訪問。對象
用法事列:private String name;//定義一個隱藏的屬性繼承
public String getName()//語法爲:【修飾符】數據類型 get[封裝的屬性名第一個字母大寫]
{
return name; 【返回值和上面的數據類型同樣】
}
public void setNmame(String name)【注意】:這是設置進去,不須要返回值
{
this.name=name;
}接口
二、【包】:引入包提供了類的多層命名空間,用於解決類的命名衝突,類文件管理等問題,【通常公司本身的包名多爲公司域名的倒寫】作用域
包名:所有爲小寫字母;
語法:package 【包名】
【注】:一、一個源文件只能指定一個包,同一個包下的類能夠自由訪問。
二、當沒有用import導入相應的包的時候,在父包中使用子包的類必須使用子包的全名,導入了包以後能夠直接使用。
三、import java.util.*;這個表示導入util這個包下面的全部類,*號是通配符。
四、import static package.packagename.classname;這個是導入這個包的相應的類下面的靜態屬性。
五、本身定義包時,使用javac -d 源程序這個代碼來編譯時,-d的意思是系統會自動爲package生成文件夾,並把生成的類放置在其下,當執行時會自動尋找,固然,子包做爲子文件夾。
三、【繼承】:子類經過繼承獲得父類的所有【屬性】和【方法】,【但不能得到父類的構造器】。
語法:【修飾符】 class 【子類】extends 【父類】
{//代碼塊
}
【注】:一、一個類只能有一個直接父類,可有無數個間接父類。【單繼承】
二、其實繼承就是從通常到特殊的的狀況,即:「is a」;如:apple is a fruit。
三、一切的類都是object類的子類。也即:若是定義的類沒有用extends顯式繼承某個類的話,那麼就會默認繼承object類。
四、重寫父類方法:a、方法名,形參列表都相同。
b、子類重寫的方法的訪問權限必須比父類的訪問權限更大,或者相等。
c、子類重寫方法的返回值類型必須比父類中方法的返回值類型更小,或者相等。
【注】:一、重寫也叫覆蓋,就是子類重寫父類的方法後,會覆蓋(屏蔽)了父類的方法,當其須要調用的時候用super(參數)【利用參數的不一樣,找不一樣的方法】,【可是若是父類方法有private修飾,則沒法調用或者重寫】。
二、子類的構造器總會默認的調用父類的構造器一次,至關因而要把父類的相關屬性和方法加載到子類上。
三、加上@override:防止重寫父類方法是出錯,編譯期給出嚴格的檢查,若是不這樣,那麼只有運行的時候才能拋出異常。
【相近名字直接的區別】
a、重載:同一個類的不一樣方法之間,經過不一樣的參數定義相同參數名的不一樣方法的途徑。
重寫:發生在子類和父類之間的。
b、this:發生的調用發生在一個類裏面。
super:發生在子類和父類之間,子類經過此關鍵字調用父類的初始化代碼,屬性,或者方法。
【注】:因爲this和super都只能放在方法的第一行,因此不可能同時出現。
五、多態:java的變量在整個使用的過程當中可能會有兩個類型,編譯時時對應的編譯類型,而運行時便由實際賦予的值決定其變量。
編譯時類型:由聲明它的變量決定。
運行時類型:由實際指向(實際賦予)的類型決定。
六、關鍵字:【引用類型變量】instanceof 【類,或者接口】判斷前面的對象是不是後面類的實例,若是是返回值爲true,若是不是返回值爲false。
【注】:一、其操做數的類型,要麼與後面的類相同,要麼與後面類有繼承關係,不然會引發編譯錯誤。
二、一般先用instance判斷一個對象是否能夠強制類型轉換,而後再強制類型轉換,從而保證程序的正確性。
七、初始化代碼塊:對一個類或者一個實例進行初始化。
語法:【修飾】 {初始化代碼塊} ;注:修飾符只能是static,或者能夠省略。
特色:沒有名字,因此不能被引用,只要建立對象時就會被隱式的執行。
有無static 的區別:有static是類初始化塊,當類加載的時候對類進行初始化,隱式執行(自動執行)。沒有static則會在對類建立實例的時候自動執行。
什麼時候執行:static修飾的是類一加載就執行,而沒有static的是當建立實例時(執行順序由代碼塊和構造器的位置決定),若初始化代碼塊在構造器前面則先執行,再執行構造器裏的代碼塊,反之則先執行構造器裏的代碼再執行初始化代碼塊。