<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

    主站蜘蛛池模板: 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 吃奶摸下高潮60分钟免费视频| 亚洲男人电影天堂| 久久综合国产乱子伦精品免费| 情人伊人久久综合亚洲| 久久九九全国免费| 亚洲va中文字幕无码久久不卡| 中文字幕在线免费看| 国产V亚洲V天堂无码| 久久精品私人影院免费看| 亚洲一区精品中文字幕| 在线观看www日本免费网站| 亚洲成人高清在线观看| 青娱分类视频精品免费2| 中文有码亚洲制服av片| 日韩毛片无码永久免费看| 成年大片免费高清在线看黄| 亚洲国产精品一区二区第四页| 黄 色一级 成 人网站免费| 久久久久无码精品亚洲日韩| 四虎成年永久免费网站 | 国产亚洲Av综合人人澡精品| 亚洲国产a级视频| 好紧我太爽了视频免费国产| 亚洲人成网站影音先锋播放| 成人无遮挡裸免费视频在线观看| 亚洲精品一卡2卡3卡四卡乱码| 亚洲第一区在线观看| 日本黄色动图免费在线观看| 亚洲一区免费视频| 亚洲精品高清在线| 久久国产乱子伦免费精品| 最新亚洲精品国偷自产在线| 亚洲国产成人五月综合网 | a在线观看免费视频| 亚洲AV综合色区无码二区偷拍 | 免费精品国产自产拍观看| 色www永久免费| 亚洲中文字幕一区精品自拍| 亚洲国产精品人人做人人爱| 99ee6热久久免费精品6|