150天打卡day10_類(lèi)和對(duì)象
面向?qū)ο缶幊趟枷?/span>
面向?qū)ο缶幊趟枷?/strong>是由面向過(guò)程編程思想演變而來(lái)的
面向過(guò)程的程序設(shè)計(jì)
代表語(yǔ)言:面向過(guò)程結(jié)構(gòu)化編程里程碑C語(yǔ)言
python java之父來(lái)源于C
面向過(guò)程就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用
的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。
舉例:如何把兩頭大象分別裝進(jìn)兩個(gè)冰箱
面向過(guò)程的設(shè)計(jì)思路就是首先分析問(wèn)題的步驟:
第一步,打開(kāi)第一個(gè)冰箱
第二步,把第一頭大象塞進(jìn)去
第三步,關(guān)上第一個(gè)冰箱
第四步,打開(kāi)第二個(gè)冰箱
第五步,把第二頭大象塞進(jìn)去
第六步,關(guān)上第二個(gè)冰箱
在這一思路的指導(dǎo)下,程序員們會(huì)逐個(gè)打開(kāi)冰箱的門(mén),每增多一個(gè)冰箱,就去打開(kāi)一次
門(mén)。甚至于每當(dāng)冰箱換個(gè)型號(hào),我們就要因?yàn)槠渲械奈⑿∽儎?dòng)而重寫(xiě)一遍這個(gè)函數(shù)。
由于面向過(guò)程編程在構(gòu)造系統(tǒng)時(shí),無(wú)法解決重用,維護(hù),擴(kuò)展的問(wèn)題,而且邏輯過(guò)于復(fù)
雜,代碼晦澀難懂,因此,人們開(kāi)始想能不能讓計(jì)算機(jī)直接模擬現(xiàn)實(shí)的環(huán)境,以人類(lèi)解決
問(wèn)題的方法,思路,習(xí)慣和步驟來(lái)設(shè)計(jì)相應(yīng)的應(yīng)用程序。于是,面向?qū)ο蟮木幊趟枷刖彤a(chǎn)
生了。
面向?qū)ο蟮木幊趟枷?/span>
代表語(yǔ)言:Java 、C++、C#
面向?qū)ο笫前褬?gòu)成問(wèn)題事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而
是為了描敘某個(gè)事物在整個(gè)解決問(wèn)題的步驟中的行為
使用面向?qū)ο缶幊趟枷虢鉀Q問(wèn)題
分析出每個(gè)解決問(wèn)題的對(duì)象(冰箱)
并確定這些對(duì)象的行為(開(kāi)門(mén),裝大象,關(guān)門(mén))
使用面向?qū)ο缶幊趟枷虢鉀Q,只需要設(shè)計(jì)一種冰箱,這個(gè)冰箱會(huì)自己把門(mén)打開(kāi)。只要
是按照這個(gè)圖紙生產(chǎn)出來(lái)的冰箱,就可以自己把門(mén)打開(kāi),自己把大象裝進(jìn)去,自己把
門(mén)關(guān)上。人們不需要了解這一過(guò)程是如何實(shí)現(xiàn)的,只要在需要把大象裝進(jìn)冰箱的時(shí)
候,跟冰箱說(shuō)一句:“嘿,你把大象裝進(jìn)去吧?!?
像這樣子,在解決問(wèn)題的過(guò)程中,分析出每個(gè)參與解決問(wèn)題的對(duì)象(冰箱),并確定
這些對(duì)象的行為(開(kāi)門(mén),裝大象,關(guān)門(mén)),最終由這些對(duì)象解決問(wèn)題的編程思想,被
稱(chēng)為面向?qū)ο蟮木幊趟枷耄∣bject Oriented Programming,簡(jiǎn)稱(chēng)OOP)。在面向?qū)ο?/span>
編程中,這張圖紙就被稱(chēng)為類(lèi),而按照這張圖紙生產(chǎn)出來(lái)的一臺(tái)臺(tái)冰箱,則被稱(chēng)為類(lèi)
的實(shí)例或者對(duì)象,這一生產(chǎn)過(guò)程,就被稱(chēng)為類(lèi)的實(shí)例化。
面向?qū)ο蠼Y(jié)構(gòu)化編程語(yǔ)言
面向?qū)ο箝_(kāi)發(fā)
就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。
面向?qū)ο笤O(shè)計(jì)
其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。
面向?qū)ο筇卣?/span>
封裝(encapsulation)
繼承(inheritance)
多態(tài)(polymorphism)
什么是對(duì)象
對(duì)象就是一個(gè)真實(shí)世界中的實(shí)體,對(duì)象與實(shí)體是一一對(duì)應(yīng)關(guān)系的,意思就是現(xiàn)實(shí)世界的每一個(gè)
實(shí)體都是一個(gè)對(duì)象,所以對(duì)象是一個(gè)具體的概念。
什么是類(lèi)
類(lèi)就是具備某些共同特征的實(shí)體的集合,它是一種抽象的數(shù)據(jù)類(lèi)型,它是對(duì)所具有相同特
征實(shí)體的抽象。在面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言中,類(lèi)是對(duì)一類(lèi)“事物”的屬性與行為的抽象。
類(lèi)是對(duì)象的集合,對(duì)象是類(lèi)的實(shí)例;對(duì)象是通過(guò)new className產(chǎn)生的,用來(lái)調(diào)用類(lèi)的方
法,類(lèi)的構(gòu)造方法 。
是由對(duì)象抽象出來(lái)來(lái)類(lèi),由類(lèi)實(shí)例話(huà)出對(duì)象
定義一個(gè)類(lèi)
類(lèi)定義了一種抽象的數(shù)據(jù)類(lèi)型(把不同類(lèi)型的數(shù)據(jù)的集合組成一個(gè)整體用來(lái)描述一種新的
事物)
類(lèi)是一個(gè)模板,它描述一類(lèi)對(duì)象的行為和狀態(tài)。

類(lèi)的成員變量
類(lèi)的定義包括 成員變量 和 方法 的定義,其中成員變量用來(lái)描述類(lèi)型對(duì)象所共同擁有的特性
?
語(yǔ)法
class 類(lèi)名 { ?成員變量類(lèi)型 變量名稱(chēng); ?..... ? }
例如創(chuàng)建學(xué)生類(lèi)型
?
對(duì)象創(chuàng)建后,成員變量可以按照默認(rèn)的方式初始化

?
類(lèi)中除了可以定義 成員變量外,還可以定義方法,用來(lái)描述對(duì)象的行為,封裝對(duì)象的功能
語(yǔ)法
class 類(lèi)名{ ?修飾詞 返回值 方法名(參數(shù)列表){ ? ?方法體 ?} }
?例如
class Student{ ?public void study(){ ? ? ?} }
?
創(chuàng)建并使用對(duì)象
由具體的實(shí)物抽象出類(lèi),對(duì)象是類(lèi)的一個(gè)實(shí)例。
使用 new 關(guān)鍵字創(chuàng)建對(duì)象
對(duì)象的過(guò)程通常稱(chēng)之為是實(shí)例化
類(lèi)名首字母大寫(xiě)
類(lèi)之間空兩行(谷歌默認(rèn))
類(lèi)名 自定義名 = new ?類(lèi)名(); Student s = new Student(); //創(chuàng)建了一個(gè)學(xué)生對(duì)象
訪(fǎng)問(wèn)對(duì)象的成員變量,調(diào)用方法
int[] num = new int[5]; Student s = new Student(); s.name
可以通過(guò)引用訪(fǎng)問(wèn)對(duì)象的成員變量或者調(diào)用方法
引用類(lèi)型變量
為了能夠?qū)?shí)例化的、對(duì)象進(jìn)行訪(fǎng)問(wèn)控制,需要使用一個(gè)特殊的變量—引用類(lèi)型變量
除了8大基本數(shù)據(jù)類(lèi)型以外,用類(lèi),接口,數(shù)組等聲明的變量都稱(chēng)之為是引用類(lèi)型變量,簡(jiǎn)稱(chēng)
引用,引用類(lèi)型變量指向的是對(duì)象的地址
案例
電腦和手機(jī)上也有Java開(kāi)發(fā)的游戲,最經(jīng)典的是:《我的世界》(minecraft ,簡(jiǎn)稱(chēng)MC),而且
現(xiàn)在世界最具人氣和影響力的手機(jī)游戲之一《王者榮耀》也是由Java開(kāi)發(fā)的。
Hero妲己,妲己在王者榮耀里面屬于遠(yuǎn)程法師類(lèi)型的,
雖然外表妖媚無(wú)害,但是運(yùn)用得當(dāng)殺傷力極高。
生命值、武力值、法強(qiáng)、攻擊范圍、防御值
移動(dòng)方法、釋放技能方法、說(shuō)話(huà)
失心、靈魂沖擊、偶像魅力、女王崇拜(大招)
歡迎??點(diǎn)贊+關(guān)注,筆芯??
