java入門學習(6)—封裝,繼承,多態,this,super,初始代碼塊

一、【封裝】:將對象的狀態信息隱藏,不容許直接訪問,而是經過該類提供的的方法阿里實現內部信息的訪問和操做。

      使用到的修飾符: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的是當建立實例時(執行順序由代碼塊和構造器的位置決定),若初始化代碼塊在構造器前面則先執行,再執行構造器裏的代碼塊,反之則先執行構造器裏的代碼再執行初始化代碼塊。

相關文章
相關標籤/搜索