Java學習筆記(一)----封裝 繼承 多態 抽象 接口

包裝  -- 對外隱藏特徵和行爲,內部實現細節 封裝有利於程序的安全
  -- 使用private修飾符私有化類的屬性和方法
 -- encapsulation
 -- 隱藏對象中的字段
 -- 提供公共的操作方法
 -- 對輸入的值進行限制
   --對封裝的屬性提供getter()  和 setter()方法 
     -- 只有getter()方法無 setter() 的屬性爲只讀屬性
     -- 只有setter()方法無getter() 的屬性爲只操作屬性
 -- 封裝包括 屬性 和方法
   -- 包括私有化屬性和方法
   -- 提供公共的接口
   -- 限制數據的訪問

 ***************************************
 訪問修飾符
   -- public    
   -- private 
   -- protected  --有關係 子類 同一個包才能夠用
   -- default   -- 默認 沒寫就是默認
 繼承
   -- 繼承就是將程序中共同的特徵和行爲抽取出來建立一個類,使其他類可以沿用此類中的屬性和方法。這不僅僅可以減少程序中的重複代碼,而且易於程序擴展
   -- 提供子類可以沿用父類的某些行爲和特徵的一種方式,在程序中使用繼承,有利於程序的擴展。
   -- 使用關鍵字extends進行繼承

   -- 子類沿用父類的某些屬性或方法的一種方式,同時有利於子類的擴展
   -- 特點
     --1、不能繼承私有的屬性和方法,構造方法也不能夠繼承
     --2、一個類有且只有一個父類(繼承的單一性)
     --3、繼承具有傳遞性
     --4、父類類型可以指向子類對象,但是隻能使用父類類型可以使用的屬性和方法 
           Persion persion = new Child(); persion只能夠調用Persion類中的屬性和方法
     --5、子類可以擁有和父類一樣的方法,具體調用哪個方法由對象的實際類型決定
           extends 方法的重寫  具體調用哪個方法由new後面實例化的對象決定
     --6、子類類型到父類類型可以自動類型轉換 
            父類類型到子類類型需要強制轉換(父類類型實際上是一個子類對象纔可以使用)
            Animal animal = new SmallMonkey();
            Monkey monkey = new SmallMonkey();
            animal(大) 轉換成 monkey(小)時候可以強制轉換 因爲他倆作爲父類 實際上都是指向子類SmallMonkey的對象
     --7、區分父類對象和子類對象使用關鍵字:this 和 super
     --8、this() super() 表示構造方法 ,沒有參數表示無參構造器 ,帶參表示帶參構造器
                                      每個子類的構造方法都默認的調用了父類的無參構造方法
                                      當父類沒有無參構造器時,子類必須顯示調用父類有的構造方法
     --9、子類中調用父類的構造方法時關鍵字super()必須放在第一行 

  --Object 是所有類的父類 所有類都直接或者間接的繼承與object
    -- 當類後沒有關鍵字extends時候 就隱式的調用Object
  -- final
    final修飾的類不能夠被繼承
    final修飾父類中的方法不能夠被重寫
    final修飾的變量表示常量 值不能夠被修改









******************* 多態  接口***********************
-- 多態的實現
  -- 多態是指一個對外接口,多種實現方式,即一個接口使用不同的實例執行不同的操作,在Java中多態有兩種表現形式,方法重載overload 和 重寫 override
  --方法的重寫  和 方法的重載
  --重載:方法名相同 參數列表不同
    -- 方法重載應在同一類中
    -- 重載方法名稱相同 參數列表不同
    -- 方法的返回值不作爲方法重載的區分條件
  -- 重寫
    -- 分別存在於父類和子類當中
    -- 子類和父類方法名相同 返回類型相同
        -- 重寫的返回類型不能夠比父類返回類型大  返回類型爲引用類型
    -- 子類和父類的方法參數列表相同
    -- 子類方法修飾符範圍不能夠比父類小




 ******************* 抽象類 **********************
抽象類
  -- 抽象類 
    -- 抽象類作用類似於模板,其目的是方便開發人員根據抽象類的格式來修改和創建新類
    -- 抽象類用於繼承,有利於程序的拓展
    -- 定義抽象類 abstract
      -- abstract 定義的方法爲抽象方法
      abstract class Book(){
            public abstract void getBookName();
      }
      -- 特點
        -- 匿名類  (定義了匿名類來實現抽象類) TestAbstract tAbstract = new TestAbstract() {};
        -- 抽象類可以定義構造方法,但是構造方法不能夠被實例化 (上面例子是匿名類實現抽象類)
        -- 可以擁有非抽象類中的一切
        -- 抽象類中可以有抽象方法 (使用abstract關鍵字修飾的方法,且沒有方法的具體實現)
        -- 存在抽象方法的類一定是抽象類  (接口中存在抽象方法,但是接口不是抽象類)
        -- 子類繼承抽象類必須實現其抽象方法,除非子類也是抽象類就不必實現
    -- 抽象方法
        -- 抽象方法不能夠以static 和 final  private protected修飾 
        -- static 修飾的是類所有 實例化時候重寫抽象方法 該方法就屬於實現類的  
        -- final 屬於終態 無法被重寫
        -- private 私有化 訪問範圍最小


  ******************* 接口 *************************
  爲什麼使用接口
  -- 彌補繼承的單一性 , 一個類可以實現多個接口
  -- 接口實現多繼承
  -- 定義
    -- 接口就是某個事物對外提供的一些功能的聲明
    -- 作用: 利用接口實現多態,彌補Java單一繼承的缺陷
    -- 定義接口關鍵字 interface
  -- 特點
    -- 靜態常量(public static final 可省略)(接口中定義的變量都爲靜態常量)
    -- 抽象方法(public abstract 可以省略)
        public abstract void takePhotos(); 等效於  void takePhotos()
    -- 實現接口關鍵字 implements
    -- 實現接口時候必須實現接口全部方法
    -- 實現多個接口時候 接口之間使用“,”隔開
    -- 接口不支持實現接口(接口中的方法都是抽象方法,如果實現接口 實現的接口就跟抽象方法有矛盾)
    -- 接口不能實例化 同時也不能有構造器


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章