<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jafe Lee

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      49 隨筆 :: 0 文章 :: 24 評(píng)論 :: 0 Trackbacks
    ??? 雖然接觸Java已經(jīng)快一年了,也系統(tǒng)的學(xué)過(guò)Java語(yǔ)法,不過(guò)很多概念到現(xiàn)在都搞不清楚,現(xiàn)在決定重新把這些模糊的概念重新溫習(xí)一遍,今天就現(xiàn)總結(jié)一下抽象類(abstract class)。

    1、使用abstract類的動(dòng)機(jī):可以參考 Cay?S.?Horstmann, Gary?Cornel 寫的書《Core Java? 2 Volume I - Fundamentals, Seventh Edition 》(順便羅嗦一下,該書是偶見(jiàn)過(guò)最好的Java入門書) “Classes, Superclasses, and Subclasses ”一節(jié),定義一個(gè)abstract class的格式是:修飾符(public, private, etc)+abstract+類名 或者 abstract + 修飾符 + 類名。

    2、如果一個(gè)類至少存在一個(gè)抽象方法(abstract method),則它自身必須聲明成一個(gè)抽象類。但一個(gè)類可以被聲明成一個(gè)抽象類即使它沒(méi)有任何抽象方法。聲明一個(gè)abstract method的格式是:
    修飾符(public, private, etc)+abstract+返回類型 + 方法名 或者 abstract + 修飾符 + 返回類型 + 方法名。

    3、一個(gè)抽象類可以有數(shù)據(jù)域和非抽象方法(concrete data and concrete methods)。

    4、當(dāng)一個(gè)子類繼承某個(gè)抽象類時(shí),它可以有兩個(gè)選擇:
    ??? (1)??? 部分實(shí)現(xiàn)或完全不實(shí)現(xiàn)父類的所有抽象方法,但此時(shí)子類必須聲明為抽象類。
    ??? (2)??? 實(shí)現(xiàn)父類所有的抽象方法,此時(shí)之類不比聲明為抽象類。

    5、抽象類不能被實(shí)例化(be instantiated),但可以實(shí)例化非抽象子類(concrete subclass)。
    ?? 可以聲明抽象類變量,但該變量必須指向一個(gè)非抽象子類
    .看下面一個(gè)例子:
    ???1.??Person?[]?people?=?new?Person[2];????
    ???
    2.?people[0]?=?new?Employee();????
    ???
    3.?people[1]?=?new?Student();??
    ???
    4.?for?(Person?p?:?people)??
    ???
    5.????System.out.println(p.getName()?+?","?+?p.getDescription());??
    注意代碼中的一個(gè)調(diào)用:p.getDescription().可能有人會(huì)擔(dān)心這里調(diào)用了一個(gè)沒(méi)定義的方法。但是, 由于不能構(gòu)造抽象類Person的對(duì)象,所以p永遠(yuǎn)不會(huì)調(diào)動(dòng)Person對(duì)象,而是只會(huì)調(diào)用諸如Employee或Student這樣的具體子類方法。注意,如果沒(méi)有定義Person中抽象方法getDescription()但是通過(guò)p調(diào)用getDescription()則會(huì)產(chǎn)生編譯錯(cuò)誤,編譯器只允許調(diào)用在類中聲明的方法。

    6、摘自《Core Java 2》的一個(gè)例子:

    PersonTest.java

    參考資料:

    Core Java 2 Volume I - Fundamentals, Seventh Edition

    by Cay S. Horstman, Gary Cornell



    posted on 2007-05-20 18:27 Jafe Lee 閱讀(4387) 評(píng)論(1)  編輯  收藏 所屬分類: Java

    評(píng)論

    # re: Java abstract 類 2007-10-09 11:51 郭娟
    2、如果一個(gè)類至少存在一個(gè)抽象方法(abstract method),則它自身必須聲明成一個(gè)抽象類。但一個(gè)類可以被聲明成一個(gè)抽象類即使它沒(méi)有任何抽象方法。
    就這一條不甚理解,假如一個(gè)類就單單用abstract聲明,但是里面沒(méi)有一個(gè)方法是abstract的,那是不是繼承他的子類只要不用abstract聲明就都不是抽象類了??????  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 99re热免费精品视频观看| 99在线在线视频免费视频观看| 青青视频观看免费99| 亚洲黄网在线观看| 2019中文字幕在线电影免费 | 十八禁的黄污污免费网站| 日韩中文无码有码免费视频 | 亚洲精品无码Av人在线观看国产 | 亚洲日韩乱码中文无码蜜桃臀| 日韩人妻无码精品久久免费一| 亚洲欧洲日产国码久在线观看| 亚洲黄色免费网址| 久久亚洲最大成人网4438| 国产精品视频免费一区二区| 亚洲sss综合天堂久久久| 青青草国产免费久久久下载| 亚洲免费综合色在线视频| 免费A级毛片在线播放不收费| 免费一级毛片在线播放视频免费观看永久 | 亚洲国产成人手机在线电影bd| 久久国内免费视频| 亚洲AV无码一区二区大桥未久| 免费一级成人毛片| 国产麻豆成人传媒免费观看| 亚洲精品福利网站| 日韩毛片免费在线观看| 日韩毛片在线免费观看| 国产gv天堂亚洲国产gv刚刚碰| 一级毛片在线观看免费| 中文字幕无码精品亚洲资源网久久 | 一级一看免费完整版毛片| 亚洲动漫精品无码av天堂| 99久久免费国产香蕉麻豆 | 亚洲国产一二三精品无码| 四虎国产精品永久免费网址 | 精品人妻系列无码人妻免费视频| 亚洲综合精品香蕉久久网97| 四虎成人免费网址在线| 国产在线国偷精品免费看| 亚洲13又紧又嫩又水多| 亚洲精品97久久中文字幕无码|