• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Merlin

            Life was like a box of chocolates. You never know what you're gonna get.

               :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              34 隨筆 :: 0 文章 :: 40 評(píng)論 :: 0 Trackbacks

            abstract class和interface在Java語(yǔ)言中都是用來(lái)進(jìn)行抽象類(lèi)定義的

            Interface ,給外界的接口,按照規(guī)定辦事;
            Abstract??,內(nèi)部繼承關(guān)系;

            interface 就是一組操作的集合,它定義了一個(gè)行為集但不作任何具體的實(shí)現(xiàn),這樣的話(huà),具體的操作 都可以放在實(shí)現(xiàn)類(lèi)中去,
            ??????????體現(xiàn)設(shè)計(jì)與實(shí)現(xiàn)分離的設(shè)計(jì)思想。

            在面向?qū)ο蟮母拍钪?,所有的?duì)象都是通過(guò)類(lèi)來(lái)描繪,如果一個(gè)類(lèi)中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,這樣的類(lèi)就是抽象類(lèi)
            抽象概念在問(wèn)題領(lǐng)域沒(méi)有對(duì)應(yīng)的具體概念,所以用以表征抽象概念的抽象類(lèi)是不能夠?qū)嵗摹?br />
            =====================================================================================================================
            使用abstract class的方式定義Demo抽象類(lèi)的方式如下:

            				abstract class Demo {
            abstract void method1();
            abstract void method2();

            }



            使用interface的方式定義Demo抽象類(lèi)的方式如下:

            				interface Demo {
            void method1();
            void method2();

            }



            ====================================================================================================================
            從編程層面看abstract class和interface

            abstract class在Java語(yǔ)言中表示的是一種繼承關(guān)系,一個(gè)類(lèi)只能使用一次繼承關(guān)系
            一個(gè)類(lèi)卻可以實(shí)現(xiàn)多個(gè)interface

            在abstract class的定義中,我們可以賦予方法的默認(rèn)行為
            在interface的定義中,方法卻不能擁有默認(rèn)行為

            ======================================================================================================================
            例如要設(shè)計(jì)一個(gè)形狀類(lèi)MShape,從此類(lèi)可以派生 方形、圓形、三角形等子類(lèi)。我們就可以將MShape這個(gè)父類(lèi)設(shè)計(jì)為abstract類(lèi)。

            比如,子類(lèi)都有 color 屬性,因此可以把 color 這個(gè)數(shù)據(jù)成員,以及給 color 賦值的method均設(shè)計(jì)在父類(lèi)中,
            這樣就不用在每個(gè)子類(lèi)中設(shè)計(jì)相同的代碼來(lái)處理 color 這個(gè)屬性。
            而如果想計(jì)算幾何形狀的面積,由于各個(gè)幾何形狀的面積計(jì)算方式都不相同,所以把計(jì)算面積的method的處理放在父類(lèi)中就不合適,
            但由于每個(gè)幾何形狀都需要用到這個(gè)method,因此可以在父類(lèi)中只聲明計(jì)算面積的method "area()",而把具體的處理放在子類(lèi)中定義。
            即把a(bǔ)rea()設(shè)計(jì)為抽象類(lèi)。

            以下是程序代碼:
            //abstract類(lèi) MShape??????

            				abstract class MShape
            {
            ????????protected String color;?? //數(shù)據(jù)成員
            ????????public void setColor(String mcolor)?? //一般方法,定義了具體的處理
            ????????{
            ?????????? color=mcolor;
            ????????}
            ????????abstract void area();?? //抽象方法,沒(méi)有定義具體的處理
            }



            //方形類(lèi)

            				class RectShape extends MShape
            {??????
            ????????int width,height,rectarea;????
            ????????public RectShape(int w,int h)
            ????????{??
            ???????????????? width=w;
            ???????????????? height=h;????????
            ????????}
            ????????public void area()??//計(jì)算面積
            ????????{??????????
            ??????????rectarea=width*height;
            ????????}
            }



            //使用

            				public class myapp
            {
            ????????public static void main(String args[])
            ????????{
            ??????????RectShape rect=new RectShape(3,6);
            ??????????rect.setColor("Red");
            ??????????rect.area();
            ??????????System.out.print("color="+rect.color+", area="+rect.rectarea);
            ????????}
            }



            由此可見(jiàn),在abstract中不僅可以定義一般的方法(即可以進(jìn)行具體處理的方法),還可以象interface一樣定義抽象方法。
            而在interface中只能定義抽象方法。

            posted on 2006-07-11 19:53 Merlin 閱讀(431) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): java基礎(chǔ)篇
            亚洲国产成人精品无码久久久久久综合 | 久久这里都是精品| 久久亚洲精品成人AV| 色综合久久久久| 亚洲国产美女精品久久久久∴| 嫩草伊人久久精品少妇AV| 丁香五月综合久久激情| 亚洲欧美成人综合久久久| 国产亚州精品女人久久久久久| 欧美国产精品久久高清| 久久久一本精品99久久精品88| 久久久久久av无码免费看大片| 久久精品国产网红主播| 久久天天婷婷五月俺也去| 国内精品久久久久久久涩爱 | 思思久久99热免费精品6| 久久精品国产91久久综合麻豆自制 | 无码人妻久久一区二区三区免费丨 | 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 久久精品国产一区二区电影| 国产精品久久久久影视不卡| 亚洲AV无码成人网站久久精品大| 香蕉99久久国产综合精品宅男自 | 久久精品国产亚洲网站| 国产美女亚洲精品久久久综合| 婷婷国产天堂久久综合五月| 久久国产热这里只有精品| 超级碰久久免费公开视频| 99久久成人国产精品免费| 久久国产亚洲精品麻豆| 久久国产乱子精品免费女| 国产精品美女久久久| 天天综合久久久网| 一级做a爰片久久毛片16| 91精品观看91久久久久久| 激情综合色综合久久综合| 国产精品美女久久久免费| 久久人妻少妇嫩草AV无码蜜桃| 午夜精品久久久内射近拍高清| 99久久国产宗和精品1上映| 欧美噜噜久久久XXX|