一、什么是面向對象?
現實世界中,隨處可見的一種事物就是對象,對象是事物存在的實體,如人類、書桌、計算機、高樓大廈等。人類解決問題的方式總是將復雜的事物簡單化,於是就會思考這些對象都是由哪些部分組成的。通常都會將對象划分為兩個部分,即動態部分與靜態部分。靜態部分,顧名思義就是不能動的部分,這個部分被稱為“屬性”,任何對象都會具備其自身屬性,如一個人,它包括高矮、胖瘦、性別、年齡等屬性。然而具有這些屬性的人會執行哪些動作也是一個值得探討的部分,這個人可以哭泣、微笑、說話、行走,這些是這個人具備的行為(動態部分)即方法,人類通過探討對象的屬性和觀察對象的行為了解對象。
二、類(封裝、繼承、多態)
類是封裝對象的屬性和行為的載體,反過來說具有相同屬性和行為的一類實體被稱為類。
1、封裝
封裝是面向對象編程的核心思想,將對象的屬性和行為封裝起來,而將對象的屬性和行為封裝起來的載體就是類,類通常對客戶隱藏其實現細節,這就是封裝的思想。
public class XiYouRenWu { private String name; private String weapon; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getWeapon() { return weapon; } public void setWeapon(String weapon) { this.weapon = weapon; } XiYouRenWu(String n,String w){ name=n; weapon=w; } }
2、繼承
類與類之間同樣具有關系,如一個百貨公司類與銷售員類相聯系,類之間這種關系被稱為關聯。關聯是描述兩個類之間的一般二元關系,例如一個百貨公司類與銷售員類就是一個關聯,再比如學生類以及教師類也是一個關聯。兩個類之間的關系有很多種,繼承是關聯中的一種。
3、多態
多態性允許以統一的風格編寫程序,以處理種類繁多的已存在的類以及相關類。該統一風格可以由父類來實現,根據父類統一風格的處理,就可以實例化子類的對象。由於整個事件的處理都只依賴於父類的方法,所以日后只要維護和調整父類的方法即可,這樣降低了維護的難度,節省了時間。 在提到多態的同時,不得不提到抽象類和接口,因為多態的實現並不依賴具體類,而是依賴於抽象類和接口。
三、類的相關知識
成員變量:在Java中對象的屬性稱為成員變量,也可以稱為屬性。為了了解成員變量,首先定義一個圖書類,成員變量對應於類對象的屬性,在Book類中設置3個成員變量id、name、category,分別對應於圖書編號、圖書名稱和圖書類別這3個圖書屬性。
public class Book { //定義屬性 //成員變量 int id; //圖書編號 String name; //圖書名 String category; //圖書類型 }
成員方法:在Java語言中使用成員方法對應於類對象的行為。以Book類為例,它包含getName()和setName()兩個方法,這兩個成員方法分別為獲取圖書名稱和設置圖書名稱的方法。定義成員方法的語法格式如下所示:
權限修飾符 返回值類型 方法名(參數類型 參數名){
... //方法體
return 返回值;
}
public void printName(){ //無返回值的成員方法 System.out.println(name); }
public String printCategory(){ //有返回值的成員方法 return category; }
局部變量:局部變量是在方法被執行時創建,在方法執行結束時被銷毀。局部變量在使用時必須進行賦值操作或被初始化,否則會出現編譯錯誤。
可以將局部變量的有效范圍稱為變量的作用域,局部變量的有效范圍從該變量的聲明開始到該變量的結束為止。
public void Min(double a,double b,double c){ double sum; //sun為局部變量 sum=a+b+c; System.out.println(sum); }
權限修飾符:Java中的權限修飾符主要包括private、public和protected,這些修飾符控制着對類和類的成員變量以及成員方法的訪問。
如果一個類的成員變量或成員方法被修飾為private,則該成員變量只能在本類中被使用,在子類中是不可見的,並且對其他包的類也是不可見的。
如果將類的成員變量和成員方法的訪問權限設置為public,則除了可以在本類使用這些數據之外,還可以在子類和其他包中的類中使用。
如果一個類使用protected修飾符,那么只有本包內的該類的子類或其他類可以訪問此類中的成員變量和成員方法。
如果一個類的訪問權限被設置為private,這個類將隱藏其內的所有數據,以免用戶直接訪問它。如果需要使類中的數據被子類或其他包中的類使用,可以將這個類設置為public訪問權限。
public class Book { //定義屬性 //成員變量 private int id; //圖書編號 private String name; //圖書名 private String category; //圖書類型 public void printName(){ //無返回值的成員方法 System.out.println(name); } public String printCategory(){ //有返回值的成員方法 return category; } }
構造方法:構造方法是一個與類同名的方法,對象的創建就是通過構造方法完成的。每當類實例化一個對象時,類都會自動調用構造方法。
構造方法的特點如下: 構造方法沒有返回值。
構造方法的名稱要與本類的名稱相同。
public class Jidongche { private String chepai; private int chesu; private double zaizhong;
Jidongche(){ //默認存在的構造方法 }
}
public class Jidongche { private String chepai; private int chesu; private double zaizhong;
Jidongche(){ //直接在構造方法中對屬性賦值,可在實例化對象時使對象的屬性值初始化 chepai="XX1234"; chesu=100; zaizhong=100; } }
public class Jidongche { private String chepai; private int chesu; private double zaizhong; Jidongche(String chepai,int chesu,double zaizhong){ //帶形參,實例化對象時必須傳參數 setChepai(chepai); setChesu(chesu); setZaizhong(zaizhong); }
