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

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

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

    jialisoftw

    java接口和抽象類的特殊實現方法

    一、java中的接口本質上是加約束的抽象類
    //抽象類
    public abstract class AExample
    {
          public abstract int add(int x,int y);
          public abstract int sub(int x,int y); 
    }
    //接口
    public interface IExample
    {
          public int add(int x,int y);
          public int sub(int x,int y); 
    }
       通常的用法是創建一個新類,這個類實現接口或從抽象類派生。這個新類要實現接口中定義的全部方法,或實現抽象類中的全部抽象方法。
    1、抽象類的實現方法:
    public class MyClass extends AExample
    {
         //其它成員定義:略
         //實現抽象類中的抽象方法
         public int add(int x,int y)
         {
              return x+y;
          }
          public int sub(int x,int y)
          {
               return x-y;
          }
          //其它部分:略
    }
    使用方法:
    AExample ae = new MyClass();
    int s = ae.add(4,2);
    int t = ae.sub(4,2);
    2、接口的實現方法:
    public class MyClass implements IExample
    {
         //其它成員定義:略
         //實現抽象類中的抽象方法
         public int add(int x,int y)
         {
              return x+y;
         }
         public int sub(int x,int y)
         {
              return x-y;
         }
         //其它部分:略
    }
    使用方法:
    IExample ae = new MyClass();
    int s = ae.add(4,2);
    int t = ae.sub(4,2);
    可見,兩者本質是一樣的,使用方法也是非常相似的。
    二、特殊實現方法
         這里不使用上述從抽象類的派生新類和用接口實現的新類的方法。
      1、先來看一下數組的初始化例子:
              int[] array;
         這樣定義數組后,array僅僅是個引用,array[0],array[1]沒有實現,即不存在。但是如果在定義時初始化為:
              int[] array = new int[]{1,2};
    1和2看成是數組的兩個“成員實例”。這時array[0],array[1]就被實現了,也即array被實現了。
      2、接口和抽象類都可以用類似的方法實現:
    1. AExample ae = new AExample(){
    2.     public int add(int x,int y)
    3.     {
    4.      return x+y;
    5.     }
    6.     public int sub(int x,int y)
    7.     {
    8.      return x-y;
    9.     }
    10. };
    11. int s = ae.add(4,2);
    12. int t = ae.sub(4,2);
        這里的所謂“成員實例”就是具體的兩個方法add和sub的實現。
    1. IExample ae = new IExample(){
    2.     public int add(int x,int y)
    3.     {
    4.      return x+y;
    5.     }
    6.     public int sub(int x,int y)
    7.     {
    8.      return x-y;
    9.     }
    10. };
    11. int s = ae.add(4,2);
    12. int t = ae.sub(4,2);
    很神奇吧!
    三、總結
         實際上這種方法在一般情況下用得比較少,主要應用于事件處理問題當中。并且主要使用接口。
        上面的形式是本人在學習java的事件處理編程時遇到一個疑問:為什么java的事件監聽者注冊時使用的形式是這樣的:
    //Person是本人設計的一個含有事件處理的類,PersonListener是個接口--監聽者接口
    Person  p = new Person("Tong",53);
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    //創建事件監聽者接口的實例并注冊
    p.addPersonListener( new PersonListener(){
          public void OnNameChanged(PersonEventObject e)
          {
               //自定義事件處理代碼
               System.out.println("Name   :"+((Person)(e.getSource())).getName());
          }
          public void OnAgeChanged(PersonEventObject e)
         {
               //自定義事件處理代碼
               System.out.println("Name   :"+((Person)(e.getSource())).getName());
      
          }
    });
    //////////////////////////////////////////////////////////////////////////////////////////////////
    將上述p.addPersonListener(...)分成兩個步驟就一清二楚了:
    PersonListener pl = new PersonListener(){
         public void OnNameChanged(PersonEventObject e)
         {
             //自定義事件處理代碼
             System.out.println("Name   :"+((Person)(e.getSource())).getName());
         }
         public void OnAgeChanged(PersonEventObject e)
         {
             //自定義事件處理代碼
             System.out.println("Name   :"+((Person)(e.getSource())).getName());
         }
    };
    p.addPersonListener(pl);
        看一看,就是我們上面討論的問題。
        通過這個例子,希望許多初學java的人會有所得。
    原文參考自站長網http://www.software8.co/wzjs/java/2743.html

    posted on 2013-01-22 17:25 飛豬一號 閱讀(232) 評論(1)  編輯  收藏

    評論

    # re: java接口和抽象類的特殊實現方法 2013-01-25 13:10 免費網絡記事本

    得提前想明白用接口,還是抽象類。
    我今天有一個項目,就發現這個問題了,得把接口改為抽象類。  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    <2013年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    常用鏈接

    留言簿

    隨筆檔案

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲激情视频在线观看| 国产精品免费久久久久影院| 国产成人免费a在线视频色戒| 亚洲视频在线视频| 久久成人免费播放网站| 亚洲AV日韩精品久久久久久久| 久久久精品午夜免费不卡| 亚洲精品中文字幕无码蜜桃| 99re6在线视频精品免费| 国产成人无码综合亚洲日韩| 久久久久久AV无码免费网站下载| 亚洲春色在线视频| 四虎影视在线影院在线观看免费视频 | 亚洲一区二区在线免费观看| 亚洲国产精品SSS在线观看AV| 国产免费一区二区视频| 在线电影你懂的亚洲| 日韩版码免费福利视频| 亚洲欧洲精品成人久久曰| 午夜亚洲av永久无码精品| 国产V片在线播放免费无码| 久久精品国产亚洲香蕉| 4399影视免费观看高清直播| 亚洲精品第一国产综合野| 免费人成无码大片在线观看| 中文日本免费高清| 亚洲精品不卡视频| 永久免费视频v片www| eeuss影院ss奇兵免费com| 蜜芽亚洲av无码精品色午夜| 亚洲国产无线乱码在线观看 | 国产猛烈高潮尖叫视频免费| 性生大片视频免费观看一级| 久久99国产亚洲高清观看首页| 91精品国产免费入口| 亚洲人成网站在线在线观看| 国产精品亚洲二区在线观看| 222www免费视频| 日日摸日日碰夜夜爽亚洲| 亚洲国产成人片在线观看无码 | 免费观看无遮挡www的小视频|