中文JAVA技術(shù)平等自由協(xié)作創(chuàng)造

          Java專題文章博客和開源

          常用鏈接

          統(tǒng)計

          最新評論

          Java接口和抽象類的實(shí)現(xiàn)方法

            一、java中的接口本質(zhì)上是加約束的抽象類
           
             //抽象類
           
             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);
           
             }
           
             通常的用法是創(chuàng)建一個新類,這個類實(shí)現(xiàn)接口或從抽象類派生。這個新類要實(shí)現(xiàn)接口中定義的全部方法,或?qū)崿F(xiàn)抽象類中的全部抽象方法。
           
             1、抽象類的實(shí)現(xiàn)方法:
           
             public class MyClass extends AExample
           
             {
           
             //其它成員定義:略
           
             //實(shí)現(xiàn)抽象類中的抽象方法
           
             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、接口的實(shí)現(xiàn)方法:
           
             public class MyClass implements IExample
           
             {
           
             //其它成員定義:略
           
             //實(shí)現(xiàn)抽象類中的抽象方法
           
             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);
           
             可見,兩者本質(zhì)是一樣的,使用方法也是非常相似的。
           
             二、特殊實(shí)現(xiàn)方法
           
             這里不使用上述從抽象類的派生新類和用接口實(shí)現(xiàn)的新類的方法。
           
             1、先來看一下數(shù)組的初始化例子:
           
             int[] array;
           
             這樣定義數(shù)組后,array僅僅是個引用,array[0],array[1]沒有實(shí)現(xiàn),即不存在。但是如果在定義時初始化為:
           
             int[] array = new int[]{1,2};
           
             1和2看成是數(shù)組的兩個“成員實(shí)例”。這時array[0],array[1]就被實(shí)現(xiàn)了,也即array被實(shí)現(xiàn)了雅思答案
           
             2、接口和抽象類都可以用類似的方法實(shí)現(xiàn)托福改分
           
             AExample ae = new AExample(){
           
             public int add(int x,int y)
           
             {
           
             return x+y;
           
             }
           
             public int sub(int x,int y)
           
             {
           
             return x-y;
           
             }
           
             };
           
             int s = ae.add(4,2);
           
             int t = ae.sub(4,2);
           
             這里的所謂“成員實(shí)例”就是具體的兩個方法add和sub的實(shí)現(xiàn)。
           
             又
           
             IExample ae = new IExample(){
           
             public int add(int x,int y)
           
             {
           
             return x+y;
           
             }
           
             public int sub(int x,int y)
           
             {
           
             return x-y;
           
             }
           
             };
           
             int s = ae.add(4,2);
           
             int t = ae.sub(4,2);
           
             很神奇吧!
           
             三、總結(jié)
           
             實(shí)際上這種方法在一般情況下用得比較少,主要應(yīng)用于事件處理問題當(dāng)中。并且主要使用接口托福答案
           
             上面的形式是本人在學(xué)習(xí)java的事件處理編程時遇到一個疑問:為什么java的事件監(jiān)聽者注冊時使用的形式是這樣的:
           
             //Person是本人設(shè)計的一個含有事件處理的類,PersonListener是個接口--監(jiān)聽者接口北美托福答案
           
             Person p = new Person("Tong",53);
           
             /////////////////////////////////////////////////////////////////////////////////////////////////////////
           
             //創(chuàng)建事件監(jiān)聽者接口的實(shí)例并注冊
           
             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);
           
             看一看,就是我們上面討論的問題。
           
             通過這個例子,希望許多初學(xué)java的人會有所得。

          posted on 2013-04-21 17:50 好不容易 閱讀(280) 評論(1)  編輯  收藏

          評論

          # re: Java接口和抽象類的實(shí)現(xiàn)方法 2013-05-07 11:15 開發(fā)吧

          果然優(yōu)秀程序員,就在博客園  回復(fù)  更多評論   


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


          網(wǎng)站導(dǎo)航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 临颍县| 新营市| 云林县| 页游| 宿松县| 栾川县| 印江| 诏安县| 什邡市| 馆陶县| 达州市| 兖州市| 四川省| 尼玛县| 望都县| 巧家县| 常宁市| 武功县| 石棉县| 铜鼓县| 双城市| 咸阳市| 弥渡县| 焉耆| 安康市| 上犹县| 安新县| 南川市| 通榆县| 乳源| 平顶山市| 铅山县| 张家界市| 桐梓县| 金门县| 上蔡县| 盐边县| 固始县| 五莲县| 炎陵县| 浪卡子县|