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

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

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

    和風(fēng)細(xì)雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術(shù)自出。

    接口與抽象類概述

    類,抽象類與接口

    類,抽象類與接口都是Java中實現(xiàn)繼承和多態(tài)的手段.
    類強調(diào)的是繼承
    接口強調(diào)的是規(guī)范
    抽象類兼而有之

    什么是接口

    接口是一種特殊的類,它只有方法定義而沒有實現(xiàn),實現(xiàn)的任務(wù)完全交給子類完成.
    接口以interface標(biāo)志.
    繼承接口用implements關(guān)鍵字實現(xiàn).
    接口可以繼承接口.
    接口可以有成員,但成員全是public static final類型的.
    接口沒有構(gòu)造函數(shù).
    接口給Java提供了多繼承機制

    接口例子—Knockable

    public interface Knockable{
            public static final String Sound="Bang!";
            public void knock();
    }

    接口例子-實現(xiàn)接口

    public class Hammer implements Knockable{
        public void knock(){
               System.out.println(Sound);
        }
    }

    接口例子-實現(xiàn)多個接口

    public interface Knockable{
        public static final String Sound="Bang!";
        public void knock();
    }

    public interface Clampable {
        public void clamp();
    }

    public class Pliers implements Knockable,Clampable{
       public void clamp(){
             // do sth
       }

       public void knock(){
            System.out.println(Sound);
       }
    }

    接口繼承接口例子

    public interface Knockable{
          public static final String Sound="Bang!";
          public void knock();
    }

    public interface Hitable extends Knockable{
          public void hit();
    }

    public class Stick implements Hitable{
          public void knock(){
              //  do sth
          }

          public void hit(){
              // do sth
          }
    }

    什么叫抽象類

    類中具有抽象方法的類為抽象類.抽象方法以abstract在函數(shù)前修飾,只有定義沒有實現(xiàn),這一點和接口一致.
    抽象類在類名前需加上abstract修飾符以標(biāo)識.
    抽象類不能生成實例.
    抽象類的繼承性和類一致.

    抽象類的實現(xiàn)

    public abstract class Gun{
      protected String cannon;
      protected List<Bullet> bullets;
       
      public abstract void shoot();
     
      public void addBullet(Bullet bullet){
        if(bullets==null){
          bullets=new LinkedList<Bullet>();
        }
       
        bullets.add(bullet);
      }
    }

    繼承抽象類

    public class Rifle extends Gun{
      public void shoot(){
        // Shoot Sth
      }
     
      public void reload(){
        if(bullets!=null){
          bullets.clear();
        }
       
        addBullet(new Bullet());
        addBullet(new Bullet());
        addBullet(new Bullet());
        addBullet(new Bullet());
        addBullet(new Bullet());
        addBullet(new Bullet());
      }
    }

    繼承抽象類并實現(xiàn)接口

    public abstract class Gun{
      protected String cannon;
      protected List<Bullet> bullets;
       
      public abstract void shoot();
     
      public void addBullet(Bullet bullet){
        if(bullets==null){
          bullets=new LinkedList<Bullet>();
        }
       
        bullets.add(bullet);
      }
    }

    public interface Thornable{
      public void thorn();
    }

    public class SpringFieldRifle extends Gun implements Thornable{
      public void thorn(){
        // thorn sth
      }
     
      public void shoot(){
        // shoot sth
      }
    }

    抽象類繼承抽象類實現(xiàn)接口的例子

    public abstract class Gun{
      protected String cannon;
      protected List<Bullet> bullets;
       
      public abstract void shoot();
     
      public void addBullet(Bullet bullet){
        if(bullets==null){
          bullets=new LinkedList<Bullet>();
        }
       
        bullets.add(bullet);
      }
    }

    public interface Handable{
      public void hold();
    }

    public abstract class HandGun extends Gun implements Handable{

    }

    public class BlackStar extends HandGun{
      public void hold(){
        // Hold the gun
      }
     
      public void shoot(){
        // Shoot Sth
      }
    }

    抽象類,接口,類的區(qū)別

    繼承好比家學(xué)淵源,所謂"忠厚傳家久,詩書繼世長",家長總會潛移默化的影響下一代,下一代也會在不經(jīng)意中學(xué)習(xí)前輩的特點,但因為年少分辨能力不高加上世易時移有些優(yōu)點已經(jīng)不再是有點甚至?xí)兂扇秉c,下一代會把前輩的優(yōu)缺點不分良莠的繼承下來.這也是日后出現(xiàn)問題的根源.

    接口好比拜師學(xué)藝,"入了這個門,就得說這行話",比如相聲界說學(xué)逗唱四門是必須要學(xué)的,但是"師傅領(lǐng)進門,修行在個人",學(xué)得怎么樣還全看自己,指望不費力的繼承什么是不可能的,具體功夫還得個人來過. 因為是自己來,具體實現(xiàn)成什么樣自由度也很大,比如四門功課中的"唱",原指唱太平歌詞,但因為愛聽的少,現(xiàn)在相聲演員已經(jīng)不要求這個了,改為唱歌唱戲的唱,其實嚴(yán)格界定的話是"學(xué)"的一種.這也無所謂對錯,郭德剛堅持唱太平歌詞也行,笑林唱流行歌曲也不錯,總之實現(xiàn)了就可以,實現(xiàn)得怎么樣則留給實踐來檢驗.一個類可以同時實現(xiàn)多個接口,就和藝人拜幾個師傅是沒有問題的,郭德剛就同時實現(xiàn)了大鼓和相聲兩個接口.

    抽象類則介于繼承和接口之間,既可不費力的從上一代繼承,也可強制實現(xiàn)某接口,有如某大師收自己的孩子為徒,當(dāng)然相聲界不讓這么干,其它曲藝行業(yè)還是可以的,比如京劇界的梅蘭芳和其子梅葆玖,既有言傳身教,也有強制實現(xiàn),綜合了繼承和接口的特點.

    抽象類,接口,類的詳細(xì)區(qū)別

    接口 抽象類
    可以繼承自 接口 抽象類,類 抽象類,類
    可以實現(xiàn)自 一個或多個接口 一個或多個接口
    有否成員 只有static final成員 均可 均可
    是否有構(gòu)造函數(shù)
    可否實例化 不可 不可
    意圖 規(guī)范行為 繼承成員+規(guī)范行為 繼承成員


    抽象類,接口和類在繼承體系中的位置

    抽象類,接口一般來說都是從一般類總結(jié)歸納出來的抽象共性的東西,類則是實際具體的東西.
    一般來說,應(yīng)該把合理抽象出的抽象類,接口放在類繼承體系的上層,子類依靠類來實現(xiàn).

    posted on 2008-02-21 19:09 和風(fēng)細(xì)雨 閱讀(459) 評論(0)  編輯  收藏 所屬分類: J2SE

    主站蜘蛛池模板: 亚洲免费福利视频| 麻豆国产精品入口免费观看| 亚洲av无码国产精品色在线看不卡| 亚洲女女女同性video| 成人免费777777| 亚洲福利中文字幕在线网址| 亚洲精品无码专区在线播放| 高清国语自产拍免费视频国产| 亚洲欧美成人av在线观看| 暖暖免费高清日本一区二区三区| 亚洲熟妇av午夜无码不卡| 成人免费乱码大片A毛片| 狠狠色伊人亚洲综合成人| 久久无码av亚洲精品色午夜| 免费的全黄一级录像带| 亚洲AV成人精品网站在线播放| 99re在线视频免费观看| 亚洲成?Ⅴ人在线观看无码| 一级毛片a女人刺激视频免费| 亚洲午夜福利AV一区二区无码 | 天天综合亚洲色在线精品| 国产一区二区免费在线| 亚洲日韩乱码中文无码蜜桃| 久久不见久久见中文字幕免费| 国产AV无码专区亚洲AV蜜芽| 亚洲国产精品一区二区第四页 | 亚洲精品无码不卡在线播放HE| 久久免费区一区二区三波多野| 亚洲中文字幕无码专区| 免费在线观看自拍性爱视频| 亚洲小说区图片区另类春色| 久久精品国产免费观看三人同眠| 亚洲国产aⅴ成人精品无吗| 日本免费人成在线网站| 亚洲av永久无码精品秋霞电影秋 | 免费看黄视频网站| 深夜福利在线视频免费| 亚洲黄色网址大全| 亚洲国产精品自产在线播放| 91精品免费高清在线| 久久亚洲春色中文字幕久久久|