樂(lè)字節(jié)Java編程語(yǔ)言發(fā)展、面向?qū)ο蠛皖?lèi)

大家好,上次我們講過(guò)了樂(lè)字節(jié)Java編程之方法、調(diào)用、重載、遞歸,接下來(lái)我們將會(huì)進(jìn)入到Java封裝的內(nèi)容。Java編程語(yǔ)言發(fā)展,面向?qū)ο蠛皖?lèi)。

一、編程語(yǔ)言的發(fā)展

機(jī)器語(yǔ)言——直接由計(jì)算機(jī)的指令組成,指令、數(shù)據(jù)、地址都以“0”和“1”組成:可以被計(jì)算機(jī)直接識(shí)別并執(zhí)行。

匯編語(yǔ)言——用容易理解和記憶的符號(hào)表示指令、數(shù)據(jù)以及寄存器等,抽象層次很低,程序員需要考慮大量的機(jī)器細(xì)節(jié)。

高級(jí)語(yǔ)言——屏蔽了機(jī)器細(xì)節(jié),提高了語(yǔ)言的抽象層次接近于人的自然語(yǔ)言,60年代出現(xiàn)的結(jié)構(gòu)化編程語(yǔ)言剔除了結(jié)構(gòu)化數(shù)據(jù)和語(yǔ)句,數(shù)據(jù)和過(guò)程抽象等概念。

面向?qū)ο蟮恼Z(yǔ)言——與以往的各種語(yǔ)言的根本不同是,它的設(shè)計(jì)出發(fā)點(diǎn)就是為了更能直接地描述問(wèn)題域中客觀存在的事物。

語(yǔ)言的發(fā)展是朝著人類(lèi)更容易理解的方向前進(jìn)。

OOP(Object Oritented Programming)面向?qū)ο缶幊?,屬于編程的一種通用的思想。OOP使我們的開(kāi)發(fā)變得不再那么復(fù)雜,并大大增加了程序的靈活性和擴(kuò)展性。如果你尚未使用OOP思想來(lái)完善你的程序設(shè)計(jì),那你真的OUT了。

代碼世界中與現(xiàn)實(shí)生活中一樣,社會(huì)需要分工,我們不必描述所有一切事物的制作過(guò)程,因?yàn)橛袝r(shí),我們只想要這個(gè)東西,并不關(guān)心它的過(guò)程。

二、面向?qū)ο蟾攀?/h1>

⑴面向過(guò)程的設(shè)計(jì)思想和面向?qū)ο蟮脑O(shè)計(jì)思想

我要吃魚(yú)香肉絲蓋飯

面向過(guò)程:我買(mǎi)菜、我洗菜、我切菜、我放水、我點(diǎn)火、我做飯、我炒菜。。。。

面向?qū)ο螅赫壹绎堭^,大吼一聲“我要吃魚(yú)香肉絲蓋飯”

至于飯?jiān)趺磥?lái)的我不管

所有的細(xì)節(jié)信息都封裝在這個(gè)飯館類(lèi)的內(nèi)部,我不需要關(guān)心里面到底有幾道工序

面向過(guò)程就是知道一個(gè)很NB的人來(lái)完成一件事;面向?qū)ο缶褪侵笇?dǎo)一群人來(lái)完成一件很NB的事。

⑵面向?qū)ο蟮脑O(shè)計(jì)思想

面向?qū)ο蟮幕舅枷胧?,從現(xiàn)實(shí)世界中客觀存在的事物出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并在系統(tǒng)的構(gòu)造中盡可能運(yùn)用人類(lèi)的自然思維方式。

面向?qū)ο蟾訌?qiáng)調(diào)運(yùn)用人類(lèi)中日常的思維邏輯中經(jīng)常采用的思想方法與原則,如抽象、分離、繼承、聚合、多態(tài)等。

三、對(duì)象和類(lèi)的概念

對(duì)象用計(jì)算機(jī)語(yǔ)言對(duì)問(wèn)題域中事物的描述,對(duì)象通過(guò)“屬性(attribute)”和“方法(method)”。

3.1 類(lèi)

類(lèi)是用于描述同一類(lèi)型的對(duì)象的一個(gè)抽象的概念,類(lèi)中定義了這一類(lèi)對(duì)象所具有的靜態(tài)屬性和動(dòng)態(tài)屬性。

類(lèi)可以看成一類(lèi)對(duì)象的模板,對(duì)象可以看成該類(lèi)的一個(gè)具體實(shí)例。

類(lèi),說(shuō)白了就是歸類(lèi),就是對(duì)同種事物進(jìn)行抽象,抽出“像”的部分,包含有關(guān)事務(wù)(對(duì)象)動(dòng)作方式的信息,包括它的名稱(chēng)、屬性、方法及所在的場(chǎng)景或聯(lián)系。

例子:

根據(jù)客戶(hù)的需要,我們來(lái)制作一個(gè)蛋糕。首先要有一個(gè)制作蛋糕的菜譜(類(lèi)),里面當(dāng)然要有制作這個(gè)蛋糕需要什么原材料(成員屬性),還要告訴我們?nèi)绾稳プ觯ǔ蓡T方法)。

3.2 符合Java的類(lèi)

publicclassCake{publicStringshape;// 蛋糕的形狀publicintcream;//奶油的量publicinteggs;//雞蛋的量publicintwater;//水的量publicintbakeTime;// 烤制時(shí)間publicStringothers;// 其他配料// 制作publicvoidmakeCake(){System.out.println(“放入”+cream+“的奶油,加入”+eggs+“雞蛋…”);}}

由此可見(jiàn):類(lèi)就是模板,同時(shí)是復(fù)雜的數(shù)據(jù)類(lèi)型

有了上述蛋糕類(lèi),還沒(méi)有擁有一個(gè)實(shí)實(shí)在在的蛋糕(對(duì)象),只有當(dāng)我們照著菜譜上寫(xiě)的,把原材料準(zhǔn)備齊全,照著一步一步去做,方可得到這個(gè)蛋糕(對(duì)象的實(shí)例化)

現(xiàn)在我們的高級(jí)面點(diǎn)師來(lái)了,他知道如何去做:只要有菜譜和材料

classBaker{Stringname;// 名字publicCakemakeCake(){Cakecake=newCake();cake.shape=“麻將型”;cake.cream=50;cake.water=500;cake.eggs=5;cake.bakeTime=5;cake.others=“黃油、糖、水果、顏料”;returncake;}}

3.3 類(lèi)(對(duì)象)之間的關(guān)系

關(guān)聯(lián)關(guān)系

繼承關(guān)系

聚合關(guān)系(整體和部分)

實(shí)現(xiàn)關(guān)系

多態(tài)

四、Java與面向?qū)ο?/h1>

對(duì)象是Java程序的核心,在Java程序中“萬(wàn)事萬(wàn)物皆對(duì)象”。

類(lèi)是用來(lái)創(chuàng)建同一類(lèi)型的“模板”,在一個(gè)類(lèi)中定義了該類(lèi)對(duì)象所具有的成員變量以及方法

JDK提供了很多類(lèi)供編程人員使用,編程人員也可以定義自己的類(lèi)。

成員變量=屬性 方法=功能

4.1 Java類(lèi)的定義

//用class關(guān)鍵字定義一個(gè)類(lèi),例如classPerson{// 成員變量intid;intage=20;// 方法定義intgetAge(){returnage;}voidsetAge(inti){age=I;}}

類(lèi)的定義主要有兩方面組成——成員變量和方法

聲明成員變量的格式為:

[<modifiers>] type <attr_name>[=defaultValue];

例如: int id; private int age = 20;

聲明方法的格式為;

[<modifiers>] <return_type> <name> ([<argu_list>]){

[<statements>]

}

例如:public int getAge(){ return age;}

4.2 成員變量

成員變量可以使用Java語(yǔ)言中任何一種數(shù)據(jù)類(lèi)型(包括基本類(lèi)型和引用類(lèi)型)

定義成員變量時(shí)可以對(duì)其初始化,如果不對(duì)其初始化,Java使用默認(rèn)的值對(duì)其初始化。

成員變量的作用范圍為整個(gè)類(lèi)體

4.3 Java面向?qū)ο蠡靖拍?/b>

Java語(yǔ)言中除基本類(lèi)型之外的變量類(lèi)型都稱(chēng)為引用類(lèi)型

Java中的對(duì)象是通過(guò)引用對(duì)其操作的。

例如:

Dog dog;

dog = new Dog();

如何在內(nèi)存中區(qū)分類(lèi)和對(duì)象?

類(lèi)是靜態(tài)的概念,代碼區(qū)

對(duì)象是new出來(lái)的,位于堆內(nèi)存,類(lèi)的每個(gè)成員變量在不同的對(duì)象中都有不同的值(除了靜態(tài)變量)而方法只有一份,執(zhí)行的時(shí)候才占用內(nèi)存。

4.4 對(duì)象的創(chuàng)建和使用

必須使用 new 關(guān)鍵字創(chuàng)建對(duì)象,new做三件事:

①會(huì)在堆中為相應(yīng)類(lèi)型分配空間

②會(huì)調(diào)用相應(yīng)的構(gòu)造方法來(lái)初始化對(duì)象

③將在堆中開(kāi)辟的空間的地址返回回來(lái)

使用對(duì)象(引用).成員變量來(lái)引用對(duì)象的成員變量。

使用對(duì)象(引用).方法(參數(shù)列表)來(lái)調(diào)用對(duì)象的方法。

同一類(lèi)的每個(gè)對(duì)象有不同的成員變量存儲(chǔ)空間。

同一類(lèi)的每個(gè)對(duì)象共享該類(lèi)的方法。

樂(lè)字節(jié)原創(chuàng),轉(zhuǎn)載請(qǐng)注冊(cè)出處。

接下來(lái),小樂(lè)會(huì)繼續(xù)講述Java構(gòu)造器,引用與內(nèi)存分析,敬請(qǐng)關(guān)注 樂(lè)字節(jié)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容