- 面向?qū)ο蟪绦蛟O(shè)計
- 使用現(xiàn)有Java類
- 自定義類
面向?qū)ο蠛诵母拍睿篶lassinstance(instance fields, method, constructor)
面向?qū)ο蟮娜齻€特征:
- encapsulation
- inheritance
- polymorphism
類之間的關(guān)系:
- 依賴(uses-a): 減少類之間耦合。
- 聚合(has-a)
- 繼承(is-a)
構(gòu)造器、new關(guān)鍵字、getter/setter(accessor/mutator method)
class ClassName { constructor1 constructor2 ... method1 method2 ... field1 field2}多個源文件的使用Employee.java、EmployeeTest.java。EmpolyeeTest.java依賴Employee.java:javac EmployeeTest.java 即可。
原理:java編譯器發(fā)現(xiàn)EmployeeTest.java使用了Employee類時會查找Employee.class的文件,如果沒有找到這個文件或者Employee.java比Employee.class新,就會自動搜索Employee.java,然后對它編譯。
簡要剖析java類:
- java訪問權(quán)限: public、PRotected、private、default
- java constructor
- 方法的implicit參數(shù)和explicit參數(shù)(this就是implicit參數(shù))
- private fields && accessor, mutator 基于類的訪問權(quán)限:方法可以訪問所屬類的私有特征(包括private fields和private methods)
- final 通常final應(yīng)用于類的primitive or immutable class(不可變類)類型的fields。比如: String就是一個immutable class, 而Date就不是immutable class
靜態(tài)域: private static int nextId = 1;靜態(tài)常量: private static final int PI = 3.14;靜態(tài)方法: Math.pow(x, a);
靜態(tài)方法有一個常見的用途:Factory方法
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();NumberFormat percentFormatter = NumberFormat.getPercentInstance();String currency = currencyFormatter.format(0.1);String percent = currencyFormatter.format(0.1);Factory方法的兩個原因:
初始化對象域的步驟:
- 所有數(shù)據(jù)域被初始化默認(rèn)值(0, false, null).
- 按照在類聲明中出現(xiàn)的次序,依次執(zhí)行所有域初始化語句和初始化塊.
- 如果構(gòu)造器第一行調(diào)用了第二個構(gòu)造器,則執(zhí)行第二個構(gòu)造器主體.
- 執(zhí)行這個構(gòu)造器的主體.
- 一定將數(shù)據(jù)設(shè)計為private.
- 一定要對數(shù)據(jù)初始化.
- 將職能過多的類進(jìn)行拆分.
- 類名和方法名能夠體現(xiàn)它們的職責(zé).
新聞熱點
疑難解答