1. 程式人生 > >java之旅(二)

java之旅(二)

  • 多型:父型別的引用可以指向子型別的物件

  • Parent p =new Child();當使用多型方式呼叫時,首先檢查父類中是否有該呼叫的方法。如果沒有則編譯錯誤;如果有,再去呼叫子類中相同名稱的方法

  • 抽象類:使用abstract關鍵字修飾的類,抽象類無法例項化,也就是說,不能new出來一個抽象類的物件

  • 抽象方法:使用abstract關鍵字所修飾的方法。抽象方法需要定義在抽象類中,

  • 如果一個類中包含了抽象方法,那麼這個類一定是抽象類

  • 如果某個類是抽象類,該類可以包含具體的方法

  • 一個類中包含了抽象方法,那麼該類一定要用abstract關鍵字修飾。

  • 在子類繼承父類的情況,那麼該子類必須要實現父類中所定義的所有的抽象方法。否則,該子類需要宣告成一個abstract class

  • 介面:介面的地位等同於class,介面中的所有方法都是抽象方法。在宣告介面中的方法時,可以使用abstract關鍵字,但通常情況下,都會省去

  • 可以將介面看做是特殊的抽象類(抽象類中可以有具體的方法,也可以有抽象類方法,而介面中只能有抽象方法,不能有具體的方法)

  • 類可以實現介面,使用implemnents 關鍵字。

  • 一個類實現了某個結構,那麼該類必須要實現介面中宣告的所有方法。如果該類是抽象類,那麼就無需實現介面中的方法了

  • java是單繼承的,就是說一個類只能有一個父類,但是一個類可以實現多個介面,多個介面之間用逗號分隔

  • 多型:就是父型別的引用可以指向子型別的物件,或者介面型別的引用可以指向實現該介面的類的例項。關於介面與實現的類之間的強制型別轉換的方式與父類和子類一樣。

  • static 關鍵字:可以用於修飾屬性、方法、類

  • static修飾屬性:表示被修飾的屬性為類屬性,可以通過類名.成員變數名的方式使用。

  • static修飾方法:static修飾的方法為靜態方法,可以通過類名.方法名使用

  • 靜態的方法只能繼承,不能重寫

  • final:可以修飾屬性,方法,類

  • 被final修飾的類不能被繼承、修飾的方法不能被重寫、修飾的屬性不能被改寫

  • 當final修飾一個原生的資料型別的時候,表示該原生的資料型別不能發生變化。final修飾一個引用型別時,表示該引用型別不能再指向其他物件,但該引用所指向的物件內容是可以發生變化的

  • 對於final修飾的成員變數,一般有兩種賦值方式:
    a):在宣告final型別的成員變數時就賦值
    b):在宣告final 型別的成員變數時不賦值、在類的所有構造方法中為其賦值

  • static程式碼塊:靜態語句塊。靜態程式碼塊的作用是完成一些初始化的工作,

    首先執行靜態程式碼塊,然後執行構造方法。靜態程式碼塊在被類載入的時候執行,而構造方法是在生成物件的時候執行;想要呼叫某個類來生成物件,首先需要將類載入到java虛擬機器上(JVM),然後由JVM載入這個類來生成物件。

  • 類的靜態程式碼塊只會執行一次,是在類被載入的時候執行,因為每個類只會被載入一次,所以靜態程式碼塊也只會被執行一次,而構造方法則是每次生成一個物件的時候都會呼叫類的構造方法,所以new一次就會呼叫構造方法一次

  • 如果繼承體系中,既有構造方法,又有靜態程式碼,那麼首先執行最頂層的類的靜態程式碼塊,一直執行到最底層的靜態程式碼塊,然後再去執行最頂層類的構造方法,一直執行到最底層類的構造方法。靜態程式碼塊只會執行一次

  • 不能在靜態方法中方位非靜態成員變數;可以再靜態方法中訪問靜態的成員變數。可以再非靜態的方法中訪問靜態的成員變數

  • 靜態的只能訪問靜態的;非靜態的可以訪問一切

  • 不能在靜態的方法中使用this關鍵字