面向對象(1):類與對象的概念

類與對象的概念

一 面向對象的基本概念


面向對象程序設計(簡稱OOP)是當今主流的程序設計範型。對於一些規模較小的問題,使用傳統的面向過程的開發方式比較理想。但問題一旦上了規模,採用面向對象的設計風格,更易於程序員對代碼的理解與維護。程序員只要知道所需修改的代碼屬於於哪一類中,就可以很快對其定位,而不必像面向過程那樣瀏覽整個繁瑣的過程。


二 類與對象


類(class)是面向對象中的一個核心概念。在Java中,沒有類的話那麼程序員將無法做任何事情。我們可以把類想象成一種設計圖紙,裏面描述了一類事物的公共屬性與公共行爲,通過設計圖紙來創建這些事物(對象)。例如,我們要設計一個描述辦理學生的類,那麼哪些屬性是公共的呢?首先,作爲一個學生,我們要有標示身份的東西,那就是姓名和學號。每一個學生都要上學,那麼在學校的這段時間裏面,又存在着一些公共的行爲,例如,上課,喫午餐等等。對於同一個類的所有對象實例,由於支持相同的行爲而具有家族式的相似性。類與其對象的關係可以用下圖展示:



要注意的是:在現實生活中,我們在認知的時候,往往由某一個或多個具體事物,來概括和了解這一類事物。然而在程序設計中,我們是先設計類,再來創建具體的對象。


三 類與類之間的關係


類與類之間存在着以下的幾種關係:
(1)繼承:這是面向對象中最常見的關係之一,這種關係表示了一種特殊(子類)與一般(父類)的關係。例如:我們有一個汽車類,裏面描述了製造一輛汽車所需的基本零配件。我們還有一個跑車類,這個類除了包含了汽車類裏面所有的零配件以外,還描述了跑車特有的一些零配件(例如:特殊的發動機與輪胎等)。繼承的知識點在之後會詳盡介紹。

(2)依賴:當A類的方法操縱着B類的對象時,我們稱之爲依賴關係。例如:我們有一個餐廳類,裏面有一個方法(行爲)叫做“製作美食”,還有一個方法叫做“購買原料”。“購買原料”這個方法裏面維護了一個“原料類”的對象。因爲我們在購買原料的時候,查看各個原料的狀態。這時,我們就說“餐廳類”依賴於“原料類”。

(3)聚合:聚合關係意味着一個類的對象中維護着另一個類的對象。


四 設計一個自定義類


Java爲開發者提供了許多預定義類,開發者可以根據需要調用Java核心類庫中的這些預定義類而不用重複造輪子。在這裏,我們先不使用這些預定義類,而從最簡單的自定義類開始研究如何設計一個類。

基本步驟:
1. 設計一個類名-----基本格式:訪問修飾符 class 類名
2. 設計類的屬性-----基本格式:數據類型 變量名
3. 設計類的構造方法----基本格式:訪問修飾符 類名 (行參列表)
4. 設計類內的方法----基本格式:範圍修飾符 返回值 方法名 (行參列表)

例子1:學生類
//創建一個學生類
class Student{
	//公共屬性
	String name;
	String sex;
	int grade;
	int ID;
	//構造方法
	public Student(String name,String sex,int grade,int ID){
		this.ID = ID;
		this.grade = grade;
		this.name = name;
		this.sex = sex;
	}
	//公共行爲:上課
	public void attendClass(){
		System.out.println("認真聽講");
	}
}

設計好這個類之後該如何使用呢?

例子2:學生類實例化
public class ClassPractice03 {
    //Java類描述學生
	public static void main(String[] args){
		//將學生類的對象實例化
		Student m = new Student("李雷","male", 2, 3);
		//查看對象的屬性
		System.out.println(m.grade);
		System.out.println(m.ID);
		System.out.println(m.name);
		System.out.println(m.sex);
	}
}


注意:1.上面兩個例子一共有兩個類:Student類與帶有Public訪問修飾符的ClassPractice03類,前者訪問修飾符爲默認的default(訪問修飾符會在後面的文章中介紹),後者作爲測試類,有一個main方法(在Java中,main方法爲程序的入口)。
2. ClassPractice03的源文件名爲ClassPractice03.java,這是因爲文件名必須與public類的名字相匹配。在一個源文件中,只能有一個公有類,但可以有任意數目的非公有類。

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