面向對象的Java實現

1.面向對象的Java實現--封裝

1-1:封裝 a.爲什麼需要封裝(封裝可以是數據方便維護、增加實用性、方便擴展等等。通過面向對象的思想,模擬現實生活中的事物。) b.什麼是封裝(封裝就是將屬性私有化,提供共有的方法訪問私有屬性) c.如何實現封裝 例如: package s2java.sg.ch01; public class AccpTeacher3{ private String name;//教員姓名 private int age;//年齡 public String getName(){ return name; } public void setName(String MyName){ name=MyName; } public int getAge(){ return age; } public void setAge(int age){ if(age<22){ System.out.println("錯誤!最小年齡應爲22歲!"); this.age=22;//若果不符合年齡要求,則賦予默認值 }else{ this.age=age; } } /* *返回自我介紹的內容 */ public String introduction(){ return "大家好!我是"+name+",我今年"+age+"歲"; } } 1-2:構造方法 a.爲什麼需要構造方法(使用構造方法可以給屬性賦值。而且,實例化一個對象實際上就是去調用這個對象的構造方法。) b.什麼是構造方法(構造方法負責對象成員的初始化工作,爲實例變量賦予合適的初始值。) 構造方法必須滿足以下語法規則:方法名與類名相同和沒有返回類型。或者會所二名同、無返型。 c.帶參數的構造方法(帶參數的構造方法可以在構造方法中傳遞參數。) 在使用帶參數的構造方法示例化對象時,傳遞的值和構造方法的參數應當在個數、次序和類型上互相匹配。 例如:AccpTeacher6 teacher=new AccpTeacher6("李名",23,"本科","諮詢師"); 通過調用帶參數的構造方法,在創建對象時,一併完成了對象成員的初始化工作,簡化了對象初始化的代碼。 1-3:方法重載 a.生活中的方法重載 例如: 一個司機可以駕駛不同的車子,雖然駕駛的行爲實現各不相同,但是這些 操作都稱爲駕駛。駕駛這一行爲就構成了生活中的方法重載。 b.方法重載的代碼示例 例如: public static int max(int a,int b) public static int max(long a,long b) public static int max(float a,foat b) public static int max(double a,double b) 多次調用Math類的max()方法,分別進行不同的取最大值的操作。 例如: public class Test{ public static void main(String[] args){ Math.max(1,2); Math.max(1.0F,2.F); Math.max(1.0,2); } } c.構造方法重載(構造方法重載是方法重載的一個典型特例) 例如: package s2Java.sg.ch02; public class AccpTeacher7{ private String name;//教員姓名 private String school="北京中心";//所在中心 public AccpTeacher7(String name){ this.name=name;//設定教員姓名 } public AccpTeacher7(String name,String school){ this.name=name;//設定教員姓名 this.school=school;//設定教員的所在中心 } public String introduction(){ return "大家好!我是"+school+"的"+name; } } 例如: package s2java.sg.ch01; public class AccpTeacher7Test{ public static void main(String[] args){ AccpTeacher7 teacher1=new AccpTeacher7("李明"); System.out.println(teacher1.introduction()); AccpTeacher7 teacher2=new AccpTeacher7("張興","天津中心"); System.out.println(teacher2.introduction()); }

2.面向對象的Java實現--繼承和多態 2-1:繼承 a.生活中的繼承(動物<--食草動物與食肉動物。食草動物<--兔子和小白羊,食肉動物<--老虎和獅子。箭頭指向的方向爲父類!) b.爲什麼需要繼承(使用繼承可以有效實現代碼複用) c.如何實現繼承(在Java語言中,用extends(extends代表擴展的意思)關鍵字用來表示一個類繼承了另一個類) 例如: public class AccpJavaTeacher2 extends AccpTeacher{ } 此例就表明AccpJavaTeacher2類繼承了AccpTeacher類 注意:Java中同C#一樣不允許有多重繼承 解釋:方法重寫,如果子類中定義的一個方法,名稱、返回類型及參數列表與父類的某個方法,名稱、返回類型及參數列表完全一致。這就稱爲方法的重寫! d.一切類的祖先--Object(Java類都是直接或間接地繼承了java.lang.Object類,Object類是所有類Java類的祖先。) 假如在定義了一個類時,沒有使用extends關鍵字,那麼這個類直接繼承Object類。 例如:public class MyObject(){} 2-2:多態 a.爲什麼需要多態(多態是面向對象思想的核心!如此做好處:代碼的可擴展性及可維護性提高) b.什麼是多態(多態是具有表現多種形態的能力的特徵或者用專業語言說:同一個實現接口,使用不同的實例而執行不同的操作。) c.如何實現多態 三個步驟: (1)子類重寫父類的方法 (2)把父類類型作爲參數類型,該父類及其子類對象作爲參數傳入 (3)運行時,根據實際創建的對象類型動態決定使用哪個方法 注意:多態性與繼承、方法重寫密切相關。好處:不僅減少代碼量,也能大大提高程序的可擴展性及可維護性。

3.面向對象的Java實現--接口 3-1:Java接口 a.生活中的接口(電腦的USB接口、電源插板、等等) b.什麼是Java接口(一個Java接口是一些方法特徵的集合,但沒有方法的實現。Java接口中定義的方法在不同的地方被實現,可以具有完全不同的行爲。) c.爲什麼需要Java接口(增加代碼的可維護性和可擴展性,當一個方法不知道如何實現,或者說實現什麼樣的效果的時候。此時就可以用到接口) 經驗:使用繼承或者Java接口都可以爲我們帶來多態的好處。一般情況下,當兩個類之間符合"is-a"的關係,並且子類可以複用部分父類的代碼, 我們使用繼承關係實現。其它情況先選擇Java接口。

注意點:Java接口不能被實例化、Java接口中聲明的成員自動設置爲public,因此Java接口中不能聲明私有的成員、 Javajiek中不能出現方法體實現、實現某個Java接口,就必須實現其中定義的所有方法。 3-2:面向接口編程 a.什麼是面向接口編程(要正確地使用Java語言進行面向對象的編程,從而提高程序的複用性,增加程序的可維護性、可擴展性,就必須是面向接口的編程) 開發系統時,主體構架使用接口,接口構成系統的骨架。這樣就可以通過更換實現接口的類來更換系統的實現。 b.面向接口編程的示例(打印機、風扇等等) 採用面向接口編程的方式實現可分爲3步驟: (1)抽象出Java接口 (2)實現Java接口 (3)使用Java接口 3-3:常量 a.爲什麼需要常量(如:一天24小時,時間是不可以被更改的。項目的版本信息是不可更改的。等等!! 從而使用常量) b.什麼是常量(常量是一種標識符,它的值在運行期間恆定不變。常量標識符在程序中只能被引用,不能被重新賦值!) 例如: public final class Math{ //圓周率PI public static final double PI=3.1415926; //將angdeg角度轉換成徑度 public static double toRadians(double angdeg){ return angdeg/180.0*PI; } } c.常量的優點(使用常量代替信息,可以增強程序的可讀性以及可維護性。) d.Java中常量的定義規則(在Java接口中定義常量會自動加上public static final的修飾符,因此,在java接口中定義常量是最佳地點。) e.在Java接口中聲明常量 例如: public interface AccpSchoolType{ String ACCP="ACCP加盟中心"; String BENT="BENT直營中心"; } 4.使用異常處理程序錯誤 4-1:異常 a.生活中的異常(大街上,突然出現一輛寶馬,撞上老太太。 橋在下雨的時候突然,斷了!等等 異常現象....) b.程序中的異常(在一次課程編程查詢上面,提示用戶錄入數字信息。但是,用戶錄入字符串,出現異常等等!異常狀況....) c.什麼是異常(異常就是在程序的運行過程中所發生的不正常的事件,它會中斷正在運行的程序。) 4-2:異常處理 a.什麼是異常處理(預處理:在異常未發生的時候,預先做出的一些措施!萬一程序發生異常了,就處理完了異常過後,程序繼續運行!) b.Java中如何進行異常處理 Java的異常處理通過5個關鍵字來實現的:try、catch(捕獲)、finally、throw(拋出)和throws聲明異常 例如: package s2Java.sg.ch04; public class Test{ public void method(){ try{ throwException(1); }catch(Exception e){ System.out.println("捕獲到異常!"); }finally{ System.out.println("finally中的代碼一定會執行!"); } } public void throwException(int i) throws Exception{ if(i==1){ throw new Exception(); } } } 注意:throw拋出異常、throws聲明異常 c.try-catch塊(使用和C#裏面一樣!) d.try-catch-finally塊(使用和C#裏面一樣!) e.多重catch塊(可以包含多個catch塊,排放次序是從特殊到一般,最後一個一般都是Exception類) 注意:Exception異常類是一切子類的父類(一般情況下) f.拋出異常(例如:上一個例子!同理....) g.聲明異常(例如:上一個例子!同理....) 4-3:log4j a.使用log4j記錄日誌信息 b.什麼是日誌(日誌主要用來記錄一些重要的操作信息,有價值的信息可以幫助用戶提前發現和避開災難,並找到事件發生的根本原因。) c.如何使用log4j記錄日誌 詳細情況請看P81

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