JAVA基礎:三、接口 靜態工廠01

  多態
1、複習
2、新內容
一、面向對象的應用
  被客戶不斷變化的需求折磨:客戶的需求總是在不斷變化過程中
  原因很簡單、客戶根本不知道自己需要什麼東西,先給你提出一個需求。等你程序開發出來了,
  他用了,可能跟他想的、說的不一樣,伴隨着整個軟件開發的生命週期。
  我們無法阻止客戶變更需求,我們使用面向對象的設計方法,能讓我們程序適應需求的變化。
  控制打印機程序,示例:
       繼承的好處:1:提高了代碼的複用性。
           2:讓類與類之間產生了關係,提供了另一個特徵多態的前提

二、抽象類和抽象方法
 面向對象:先抽象再具體。好處是什麼?Boss談話:我們要好好努力,爲xxx而努力奮鬥。
 ★抽象方法的語法特徵:
 1、只有方法的定義沒有方法體;(就沒有完成的方法)
 2、用abstract修飾的方法;
 public abstract void eat();   //沒有函數體?調用的時候執行什麼?
 eat不太好寫,亞洲人吃飯用筷子,歐美人用刀叉,印度人用手!怎麼辦?稍後解釋
 ★抽象類的語法特徵:
 某個類中含有抽象方法,那麼就稱之爲抽象類,同樣有abstract修飾。
 1.抽象類不能夠生成對象。只可以用來繼承。(抽象類天生就是用來當爹的!)
 2.一個類中如果包含抽象方法,那麼這個類必須被聲明成抽象類。
 3.抽象類的子類一定要必須去實現父類的抽象方法。
 4.若子類不能幫助父類實現抽象,那麼子類就是一個抽象類。只能有子類的子類再去完成
 5.如果一個類中沒有抽象函數,這個類也可以被聲明成抽象類。(爲啥?防止這個類被生成對象)
 public abstract class Person {}            //抽象類:基類
 ★抽象類可以有構造函數嗎?
 1、抽象類不能生成對象。2、構造函數用於生成類的對象。 
 結論:???見示例
 抽象類不能生成對象,但是卻可以擁有構造函數,是爲子類調用準備的。
 ★抽象類的作用?(抽象類的必要性)
 汽車?開汽車drive()的方法沒有辦法給具體的方法體?手動檔自動檔開法不一樣!
 無法給出具體的駕駛方法,要看具體類型的汽車再來定義具體的駕駛方法。
 那麼把這個方法定義成抽象的,把這個汽車類也定義成抽象的。
 練習:把打印機的打印方法也定義成抽象的。(打印方法不同:HP是噴墨打印機/佳能是激光打印機)
三、接口、(虛的,沒有什麼作用?)
 什麼是接口:
  現實世界的接口:
   例如USB接口,可以接這麼多設備(手機、mp3、電扇、鼠標、冰箱)
                (定義了一個標準:傳遞數據標準、供電標準)
  面向對象世界的接口:
   定義了接口,就是定義了調用對象的標準。
 接口的基本語法:
  接口就是比較純粹的抽象類;
  在接口中可以省略abstract,默認都是抽象方法。
  (方法前面不用寫abstract,接口裏的方法都是public的。注意:接口就不允許有非抽象方法。)
  定義:public interface USB{}
 快速創建接口:右鍵——》new——》interface
 接口不能有子類。(不能被繼承)
 接口也不能實例化生成對象,只能被實現(關鍵字:implements)。
 實現接口就必須要實現接口中的抽象方法。
 一個類可以實現多個接口(手機可以實現usb標準,也可以實現wifi接口,還可以實現藍牙接口)
 接口實現動態多態,也可以使用接口的引用指向實現類的對象(實體)
 接口的應用:初學者對接口的使用比較困惑
  爲什麼要使用接口?
  工廠方法模式(非常常用的設計模式)
 總結:
 接口:定義接口interface、實現接口(implements)
 接口就不允許有非抽象方法。(只是將abstrct省略了而已)
 ★接口實現動態多態,也可以使用接口的引用指向實現類的對象!

四、final:關鍵字(修飾詞)是最終的,不可以修改的意思。
 有三種用法:
 第一種:用來修飾變量,是不可以被修改的。一旦有的值就不能被修改。
 public final int age = 20;
 第二種:用來修飾方法,是不能被子類覆蓋的。
 public final void fianlTest(){}
 第三種:用來修飾類:那麼類就不能被繼承
 final class FinalDo{}
發佈了44 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章