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

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

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

    和風細雨

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

    接口與抽象類概述

    類,抽象類與接口

    類,抽象類與接口都是Java中實現繼承和多態的手段.
    類強調的是繼承
    接口強調的是規范
    抽象類兼而有之

    什么是接口

    接口是一種特殊的類,它只有方法定義而沒有實現,實現的任務完全交給子類完成.
    接口以interface標志.
    繼承接口用implements關鍵字實現.
    接口可以繼承接口.
    接口可以有成員,但成員全是public static final類型的.
    接口沒有構造函數.
    接口給Java提供了多繼承機制

    接口例子—Knockable

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

    接口例子-實現接口

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

    接口例子-實現多個接口

    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在函數前修飾,只有定義沒有實現,這一點和接口一致.
    抽象類在類名前需加上abstract修飾符以標識.
    抽象類不能生成實例.
    抽象類的繼承性和類一致.

    抽象類的實現

    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());
      }
    }

    繼承抽象類并實現接口

    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
      }
    }

    抽象類繼承抽象類實現接口的例子

    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
      }
    }

    抽象類,接口,類的區別

    繼承好比家學淵源,所謂"忠厚傳家久,詩書繼世長",家長總會潛移默化的影響下一代,下一代也會在不經意中學習前輩的特點,但因為年少分辨能力不高加上世易時移有些優點已經不再是有點甚至會變成缺點,下一代會把前輩的優缺點不分良莠的繼承下來.這也是日后出現問題的根源.

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

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

    抽象類,接口,類的詳細區別

    接口 抽象類
    可以繼承自 接口 抽象類,類 抽象類,類
    可以實現自 一個或多個接口 一個或多個接口
    有否成員 只有static final成員 均可 均可
    是否有構造函數
    可否實例化 不可 不可
    意圖 規范行為 繼承成員+規范行為 繼承成員


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

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

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

    主站蜘蛛池模板: 无码天堂va亚洲va在线va| 亚洲国产日韩在线| 免费日本黄色网址| 亚洲精品专区在线观看| 2048亚洲精品国产| 亚洲宅男天堂a在线| 春暖花开亚洲性无区一区二区| 在线a级毛片免费视频| 亚洲精品麻豆av| 黄网站色视频免费观看45分钟| 国产无遮挡裸体免费视频在线观看| 一级毛片免费观看不卡的| 啦啦啦中文在线观看电视剧免费版| 成人亚洲网站www在线观看| 亚洲国产精品久久久久婷婷老年| 国产精品亚洲精品观看不卡| 免费一级毛片在线播放视频免费观看永久 | 成人au免费视频影院| 久久久久亚洲精品天堂久久久久久| 91亚洲导航深夜福利| 美国免费高清一级毛片| 免费在线观看h片| 亚洲午夜AV无码专区在线播放| 丝袜捆绑调教视频免费区| 妞干网在线免费视频| 国产亚洲精品美女| 精品亚洲综合久久中文字幕| 337P日本欧洲亚洲大胆艺术图 | 男女一边摸一边做爽的免费视频| 丁香花免费高清视频完整版| 亚洲AV综合色区无码一二三区| 三年片在线观看免费观看大全一| 无码永久免费AV网站| 边摸边脱吃奶边高潮视频免费 | 亚洲国产av美女网站| 日韩精品免费一区二区三区| 亚洲avav天堂av在线网爱情| 亚洲免费闲人蜜桃| 怡红院亚洲红怡院在线观看| 亚洲精品无码国产| 一级中文字幕乱码免费|