我們先介紹基本的面向物件概念,具體的使用語法也就是定義的關鍵字后面會介紹
前面我們簡單介紹了面向物件和面向程序的思維方式不同,簡單理解就是面向程序方式主要關心的是流程化,而面向物件方式主要是找參與者,也就是找類,類是面向物件中最基本的概念,是面向物件分析OOA和面向物件設計OOD的基石,另一個基石是物件,
類和物件其實分不開的關系,就像雞和蛋的關系,無法具體知道哪個先產生,只是我們設計類的時候先定義類,所以我們先介紹類的概念,
一、類
類是物件的模板,但是什么物件呢?這個我們留個花絮,在介紹物件之前我們先給類一個通俗的定義吧!
那就是多個相似事物的通稱,是不是還有點難理解,那我就一個詞一個詞的解釋一下,
多個這個詞容易理解,就是有很多事物;單個事物不能形成類;
相似代表有相同的特征,但是也有不同的地方,比如: 張繼科和林丹,他倆必定有相同的特征,都有鼻子眼睛嘴等等,但是也有不同的地方,比如他倆的身高體重等不一定完全相同, 他倆還有各自的功能,張繼科打乒乓球的,林丹打羽毛球的,
這就是我們說相似而不是相同;
通稱也比較好理解,還拿張繼科和林丹舉例子,他倆都可以統稱為人類,但是不能說統稱為張繼科,張繼科那就是具體的人了,按照上面的理解知道什么是類了吧,奧迪和寶馬是不是一類呢,他倆都屬于車,所以就是一個車類,
再比如波音和慷訓都統稱為飛機,所以就是一個飛機類,我們再想一個問題,飛機和車是不是一個類呢,它倆都有發動機,可以統稱為交通工具,說到這就有答案了,飛機和車是一個交通工具類,
說到這你可能就想到了所有的事物最終都可以有大的統稱,那為啥還分那么多類呢,就設計一個大類唄,這就失去了面向物件思想的一個好處,可擴展性,舉一個例子,如果只設計一個交通工具類,原先的需求就有飛機和汽車,
某天需要添加個輪船類呢,就要修改類的結構,反之只需要添加輪船類就好,通過上面的介紹,都知道類到底是個啥,設計類的時候按照具體的需求就好,需求和觀察角度不同,設計出來的類可能都不同,
比如:設計一個交通工具類和設計一個汽車類都不一樣,
我們上面是拿文字大概介紹的,拿張繼科和林丹舉例子他倆都有靜態特性,是一個名詞,比如年齡、性別等等,也還有動態的功能,是一個動詞,比如都能打球、訓練等等,
張繼科和林丹不是類,是具體的個體,所以就需要抽取共同的部分抽取成人類,
可是對應到面向物件中咋設計一個類呢,分別用屬性和方法表示,屬性就是指靜態特性,方法就是指動態的功能;簡單判斷標準就是名詞是屬性,動詞是方法,我們用一個程式看一下,
/**
* 人類
*/
public class Person {
//屬性,人具有的特征
String name; //名字
int age; //年齡
float height; //身高
float weight; //體重
String gender; //性別
//方法,人具有的功能
//方法可以訪問屬性
public String getName() {
return name;
}
public void playBall(){
System.out.println("打球!");
}
public void train(){
System.out.println("訓練!");
}
}
上面的代碼寫出來我們并不能運行,一個類不能做事情,就比如一個人類能打球嗎,顯然不能,都是某個人能打球,所以我們需要一個類的物體來做事情,
二、物件
接下來我們該介紹什么是物件了,上面我們說過類是物件的模板,類都知道是什么了,對應的模板都知道是什么吧,一個使物體成固定型狀的模具;
比如做蛋糕,你可以拿一個模具,然后把做好的面糊倒在里面放入入微波爐制作,制作完成之后模具中就有了一個具體的蛋糕,這個蛋糕和模具的形狀基本就是相同的,
對應到面向物件思想中,這個做出來的每個蛋糕就是一個個物件,這每個蛋糕放在一起就是一個統稱蛋糕,這其實就是一個蛋糕類,
蛋糕類是抽象的,也就是沒有具體的物體,只是通過這個蛋糕模板可以知道大概的形狀而已,通過微波爐制作的程序對應程式中就是實體化,
另外物件和類其實是相對的概念,上面談過觀察角度不同,類的設計不同,這樣的話對應的物件也不同,比如以車作為參照標準來說,車是一個類,具體的奧迪就是一個車的物件,它是一個車的具體品牌,
ok說到這我們要說一下類和物件的聯系:現實物件(歸納概括)--->現實類(抽象模擬)--->軟體類(實體化)--->軟體物件--->程式

現實類和物件就是我們現實世界能看到的東西嗎,軟體類和軟體物件就是軟體設計和運行中產生的
我們對上面的類進行一下實體化,創建具體的物件,先用圖展示一下

/**
* 創建一個張繼科的物件
*/
public class TestPerson {
public static void main(String[] args) {
//先創建一個具體的空人,也就是空物件
Person person=new Person();
person.name="張繼科"; //設定名字為張繼科
person.play();//呼叫人類的方法,這個名字為張繼科在打球
}
}
通過上面的介紹也就可以理解說:類是物件的抽象,物件是類的實體化了,那抽象是什么呢?抽象其實就是把像的部分抽取出來 ,而抽象的作用就是:隔離關注點,降低復雜度,就比如設計交通工具類,不劃分類別的話,都集中在一起的話,那么我們的程式得多復雜凌亂,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/214392.html
標籤:Java
上一篇:080_貪吃蛇
下一篇:兄弟們,幫幫小白
