物件導向的Java實現

來源:互聯網
上載者:User

標籤:else   常量   繼承   eth   建立對象   變數   文法規則   set   轉換   

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

 

物件導向的Java實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.