隨筆 - 303  文章 - 883  trackbacks - 0
          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          歡迎光臨! 
          閑聊 QQ:1074961813

          隨筆分類(lèi)(357)

          我管理的群

          公共blog

          • n維空間
          • Email : java3d@126.com 群 : 12999758

          參與管理的論壇

          好友的blog

          我的其他blog

          朋友的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          本文以一條龍的形式一次性解決問(wèn)題。

          類(lèi)是廣泛的概念,表示一個(gè)有共同性質(zhì)的群體。如:人類(lèi)。

          代碼:
          ?????? //?聲明一個(gè)類(lèi)“Human”
          ??????????? class?Human{
          ????????????private?String?name;
          ??????????? public?String?getName(){
          ?????????????????????????????? return?name;
          ????????????????????????????????????????????? }
          ???????????public?void?setName(String?value){
          ??????????????????????????????????????? ?this.name?=?value;
          ????????????????????????????????????????????????? }
          ????????????????????????????????? //......
          ?????????????????????????????? }


          對(duì)象指的是具體的一個(gè)實(shí)實(shí)在在的東西。如、張三、李四。

          代碼:
          ????????????????????????? Human?zhangsan?=?new?Human();

          圖:
          ???? 人.png

          圖中我們?cè)趺磩?chuàng)建張三和李四呢??我們前面的代碼好像還沒(méi)涉及,恩好,看下面

          Human?human?=?new?Human();

          程序執(zhí)行到這里之后,java虛擬機(jī)將會(huì)在內(nèi)存中創(chuàng)建一個(gè)?Human?對(duì)象,并將這個(gè)對(duì)象的引用賦給?human?變量。

          接著:human.setName("張三"); human.setName("李四");好了對(duì)象(實(shí)例)創(chuàng)建好了,呵呵

          圖:
          ????? 人1.png

          “人”是一個(gè)基類(lèi),則“男人”是“人”的一個(gè)子類(lèi)。如果“張三”是一個(gè)“男人”,也就是說(shuō)“張三”是“男人”的一個(gè)對(duì)象,那么顯然“張三”也是“人”這個(gè)基類(lèi)的一個(gè)對(duì)象。
          ???class nanren?extends? human(String args[ ]){
          ???????????//.............
          ??????? }


          方法是類(lèi)的行為,如人會(huì)笑、會(huì)坐、會(huì)走路 一樣。

          圖:
          ????? 人2.png
          ????????
          ?
          代碼:
          ?????????? zhangsan.go();zhangsan.xiao();zhangsan.shuijiao();zhangsan.qita();

          接口只定義了一些方法,而沒(méi)有實(shí)現(xiàn)這些方法,它規(guī)定了實(shí)現(xiàn)接口的類(lèi)必須具備的方法(能力),它只是一個(gè)規(guī)定

          我們規(guī)定:只要是人就可以走路、笑、睡覺(jué)、做其他的事,于是我們用代碼實(shí)現(xiàn)這個(gè)規(guī)定
          public?interface?you_are_human{
          public?void?go();
          public?void?xiao();
          public void shuijiao();
          public void qita();
          }

          這時(shí),張三想做人,但他只想擁有走路和笑的能力。首先,他必須聲明自己是人,也就是前面對(duì)人的規(guī)定,
          然后想做什么由他自己決定:

          public?class?zhangsan extends?Human?implements?you_are_human{
          public?void?go(){
          //?......
          }
          public?void?xiao(){
          //?......
          }
          }

          使用的時(shí)候:
          you_are_human??zhangsan?=?new?you_are_human();

          zhangsan.go();

          zhangsan.xiao();


          那有的人就會(huì)問(wèn),這和前面我定義類(lèi)有什么區(qū)別;

          這是因?yàn)椋簀ava的類(lèi)的繼承是從上到下的,爺爺1 》老爸1 》兒子1

          ????????????????????????????????????????????????????????????????????? 爺爺2?? 》老爸2? 》?兒子2
          ?????而不能是:爺爺2? 》?兒子1

          這樣就亂套了?,是不,鬧笑話;所以,類(lèi)規(guī)定了不繼承關(guān)系,防止亂套,使結(jié)構(gòu)變得清晰。

          所以,當(dāng)我們使用樹(shù)型結(jié)構(gòu)時(shí),使用類(lèi)。


          由于,在生活中還有許多這樣的情況,如,張三是中國(guó)人,那張三他也是美國(guó)人雙重身份。
          ???????????????????
          ?????????????????????????????????????????????????????????????????? 再如,李四是java工程師,也是廚師。
          那怎么辦??

          我們可以這么做:
          規(guī)定多個(gè)身份
          public?interface zhengjian{
          interface China(){
          public?void?China_L(){
          //.................
          ???????????????????????? ??? }
          ???????????????????????????}
          interface? USA(){
          public? void?USA_L(){
          //...........
          ?????????? }

          }

          public?class?zhangsan extends?zhengjian?implements?Chna , USA{
          public?void?China_L(){
          //?......
          }
          public?void?USA_L(){
          //?......
          }
          }


          當(dāng)張三去美國(guó)時(shí),老美叫他拿個(gè)綠證來(lái)看:

          zhangsan.USA_L();

          呵呵,再舉個(gè)例子大家就清楚了:

          HP有“三星”和“IBM”兩種,我通常而言不可能一個(gè)HP是既是“三星”又是“IBM”的吧~~~~~~~~類(lèi)
          ????????? “家庭式”和“辦公式”兩種,但往往我們能買(mǎi)到擁有兩種款式相結(jié)合廠品是吧??? ~~~~~~~~~~~接口

          中國(guó)人說(shuō)起來(lái),類(lèi)有點(diǎn)“封建世襲制”,接口有點(diǎn)“違反常理亂倫”,呵呵開(kāi)個(gè)玩笑

          這樣說(shuō)完大家再去看些相關(guān)文章就會(huì)覺(jué)得很容易了 呵呵

          剩下抽象類(lèi)就簡(jiǎn)單了,那是抽象類(lèi)(abstract他還是類(lèi)(class),只不過(guò)是抽象的罷了。

          抽象類(lèi)對(duì)某具體類(lèi)型的部分實(shí)現(xiàn)------抽象類(lèi)是對(duì)具體的抽象方法特征包括:方法的名字、參數(shù)的數(shù)目、參數(shù)的類(lèi)型。

          不包括:返回類(lèi)型、參數(shù)名字、和拋出的異常。

          java接口(抽象類(lèi))用來(lái)聲明一個(gè)新的類(lèi)型,Java設(shè)計(jì)師應(yīng)當(dāng)主要使用接口和抽象類(lèi)將軟件單位與內(nèi)部和外部耦合(軟件工程中內(nèi)容)起來(lái)。

          在理想的情況下,一個(gè)具體類(lèi)應(yīng)當(dāng)只實(shí)現(xiàn)接口和抽象類(lèi)中聲明的方法,而不應(yīng)當(dāng)給出多余的方法!

          抽象類(lèi)僅提供一個(gè)類(lèi)的部分實(shí)現(xiàn)。抽象類(lèi)可以有實(shí)例變量、以及一個(gè)或多個(gè)構(gòu)造函數(shù)。

          人這個(gè)概念夠抽象了吧!
          public? abstract ? class?? Human{...}??

          男人也是
          ?
          public?? abstract ? class??man{...}???


          有一點(diǎn)必須講清:接口不能繼承抽象類(lèi),接口只能繼承實(shí)實(shí)在在的類(lèi),

          如,我可以為某個(gè)HP廠品(類(lèi))規(guī)定一種規(guī)范(接口),但由于各個(gè)廠家推陳出新,所以,我很難對(duì)某一類(lèi)型廠品規(guī)定,“家庭型hp”就很難下個(gè)結(jié)論(接口)。


          從軟件優(yōu)化角度來(lái)考慮類(lèi)和接口問(wèn)題。類(lèi)class條理清楚內(nèi)聚性好,用于軟件模塊內(nèi)部實(shí)現(xiàn)(汽車(chē)的內(nèi)部機(jī)

          械);接口interface很靈活耦合性好,用于模塊外部實(shí)現(xiàn)(如,汽車(chē)操作板的按鈕)。從而實(shí)現(xiàn)強(qiáng)內(nèi)聚、松耦合

          的軟件設(shè)計(jì)思想。



          講完了!呵呵,現(xiàn)在出看其他解釋?xiě)?yīng)該容易接受一點(diǎn)了。下一篇文章是對(duì)一個(gè)網(wǎng)友提出一個(gè)建議的解說(shuō),

          和這一篇有點(diǎn)關(guān)系,希望大家看看。






          地震讓大伙知道:居安思危,才是生存之道。
          posted on 2007-02-27 07:10 小尋 閱讀(410) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): j2se/j2ee/j2me
          主站蜘蛛池模板: 定兴县| 元江| 长阳| 濮阳市| 海丰县| 永城市| 桑植县| 高青县| 右玉县| 镇平县| 剑川县| 新巴尔虎左旗| 手机| 绥芬河市| 庆阳市| 砀山县| 沂水县| 峨眉山市| 阜新| 五莲县| 广丰县| 固镇县| 宣恩县| 垦利县| 沈阳市| 图木舒克市| 乡宁县| 保德县| 玛多县| 绥江县| 通山县| 睢宁县| 高雄市| 公安县| 沁水县| 武城县| 九龙城区| 漳浦县| 紫金县| 兰州市| 朔州市|