明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

面向?qū)ο缶幊?我的思想(3)

[摘要]2.深入探討面向?qū)ο螅?.1“類型”的內(nèi)部細節(jié): 有了上面的知識,我們現(xiàn)在就可以深入的挖掘類的內(nèi)部實現(xiàn)了。所有的知識點我都會圍繞著類與對象展開,在此之前,我希望你能夠確信對以上所介紹的基本內(nèi)容已完全掌握了! 是的,面向?qū)ο蟮木幊陶Z言最大的特色就是可以編寫自己所需的數(shù)據(jù)類型,以更...

2.深入探討面向?qū)ο螅?.1“類型”的內(nèi)部細節(jié):       有了上面的知識,我們現(xiàn)在就可以深入的挖掘類的內(nèi)部實現(xiàn)了。所有的知識點我都會圍繞著類與對象展開,在此之前,我希望你能夠確信對以上所介紹的基本內(nèi)容已完全掌握了!     是的,面向?qū)ο蟮木幊陶Z言最大的特色就是可以編寫自己所需的數(shù)據(jù)類型,以更好的解決問題。我想我必須要幫你搞清楚“類,對象,屬性,方法它們之間的關(guān)系”!就像我前面所說的,人這個“類”是什么也做不了的,因為“人類”只是一個抽象的概念,它不是實實在在的“東西”,而這個“東西”就是所謂的對象。只有人這個“對象”才能去工作。而類呢?類是對象的描述!對象從類中產(chǎn)生出來!此時,對象具有類所描述的所有的屬性以及方法。-------一定要理解這句話。。∫苍S你已經(jīng)有些不知所措了,沒關(guān)系!好好的回味一下,我再舉個例子!例如電視機,電視機都有工作原理圖,那么什么叫電視機呢?只要它能夠?qū)崿F(xiàn)工作原理圖的所有功能的物體,我們都叫它電視機。你想想是不是這么一回事兒?可是,電視機原理圖是不能工作的,也就是這個原理圖不能收看節(jié)目,只有電視機這個“實體——即所謂的對象”才能收看節(jié)目,也就是說,從類生成出對象之后才算得上是真正的有意義!才能開始工作。此時,電視機擁有電視原理圖所描述的所有的屬性及方法!明白了吧,呵呵!我先前介紹過,類是屬性與方法的集合。而這些屬性與方法可以被聲明為私有的(private),公共的(public)或是受保護(protected)的,他們描述了對類成員的訪問控制。下面我分別做一下介紹:1.  公共的(public):把變量聲明為公共類型的之后,那么就可以通過對象來直接訪問,一切都是暴露無遺的!也就是說,你的信用卡密碼別人也能夠直接得到。2.  私有的(private):如果把變量聲明為私有的情況就好多了,想要得到我的信用卡密碼,對象必須要調(diào)用專用的方法才能夠得到。3.  受保護的(protected):介紹繼承時再討論。4.  默認控制訪問符(friendly)://JAVA中有而C++中沒有。為了實現(xiàn)數(shù)據(jù)的封裝,提高數(shù)據(jù)的安全性,我們一般會把類的屬性聲明為私有的,而把類的方法聲明為公共的。這樣,對象能夠直接調(diào)用類中定義的所有方法,當(dāng)對象想要修改或得到自己的屬性的時候就必須要調(diào)用以定義好的專用的方法才能夠?qū)崿F(xiàn)。你想想,你會把你的信用卡密碼公布出來嘛?呵呵!所以,我們提倡的是:“對象調(diào)方法,方法改屬性”;2.2通過實例看內(nèi)存分配:說了這么多,讓我們來看一個實例吧!比如:現(xiàn)在我們要編寫某家公司員工管理系統(tǒng),你認為最合適的數(shù)據(jù)類型是什么?我認為是員工個人!但是在面向過程的語言中,這樣做是不允許的,因為它只能使用語言中的內(nèi)部數(shù)據(jù)類型!而員工不在這個內(nèi)部數(shù)據(jù)類型之內(nèi)!也許有人會說可以用C語言中的struct,好注意!畢竟它是類的基礎(chǔ)!如果你以前是一名面C或B的程序員,請你忘掉這些,讓我們一起看看如何用類來實現(xiàn)這一切吧!       某家公司的員工是人類的一個特殊群體,它除了具備人類的所有特性與方法外,它還有額外的特性與方法,比如她有她的工資、信用卡密碼、作息時間等等,這些特性以及工作內(nèi)容,工作量等等這些方法。而在計算機中我們該如何定義這個類呢?下面我將寫出它的格式,讓你看看在計算機中它是張什么樣子的!  /*在此我需要再次聲明的是,我用的是JAVA格式,在語法格式上它與C++大不相同!許多細節(jié)以及內(nèi)部操作都有諸多區(qū)別,而在思想上確實大同小異的*/       //employee.javapublic class employee{       private String name;       //員工姓名       private int age;           //員工年齡       private char sex;          //員工性別       private float emolument;   //員工薪水private boolean lunch;     //員工午餐                              //……等等public void heater(){              //這個方法是用來加工員工的午餐              lunch = true;}public void setName(String a){      //這個方法是修改員工的姓名              name= a;}public String getName(){           //這個方法是得到員工的姓名       return name;}//……等等}這樣我們就定義完了我們所需要的數(shù)據(jù)類型。現(xiàn)在,讓我們來看看它能夠干什么以及怎么工作!我想要做的是,工作室里有一個光桿司令叫“jingwei”,我修改它的名字后對對它進行輸出,看看我是怎么做的吧!注意:請仔細觀察對象是如何調(diào)用方法的,它使用了“.”操作符!事實上是這樣的,對象調(diào)用公共的屬性或方法時就會使用“.”操作符。然而在C++中,如果定義一個同類型的指針,該指針調(diào)用此對象的方法時,就會使用“->”操作符。更詳細的內(nèi)容清參閱相關(guān)書籍了!//workstation.java       import java.awt.Graphics;import java.applet.Applet;       public class workstation extends Applet{              private employee jingwei ;      //對象的聲明,此時并不分配內(nèi)存!              public void init(){                    jingwei = new employee();  /*此時創(chuàng)建對象會調(diào)用構(gòu)造函數(shù),稍候介紹*/                     jingwei.setName(“jw”);        //設(shè)置我的名字              }              public void paint(Graphics g){                     g.drawString("my age is "+jingwei.getName(),10,10);//顯示我的年齡       }}輸出結(jié)果是:       my name is jw這串字符串是在輸出窗口的x坐標(biāo)軸為10 px  ,  y坐標(biāo)軸為10 px的位置。我現(xiàn)在要做的是,把上面的程序做個大解剖,讓你能夠看清楚它到底是怎么一回事兒。ㄎ铱刹粫r帶你去看里面的匯編,呵呵,那個我也不會:)