工作小驛

          Ninja!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks

               java語言中允許有一種叫做抽象方法的東西,他只是一個名字沒有具體的實現(xiàn)。像是這樣: public abstract void abc(); 使用了abstract關(guān)鍵字,結(jié)尾用“;”結(jié)束。與前幾節(jié)我們用的方法都是具體方法,是有實現(xiàn)的。哪怕方法體中什么也不寫public void abc() { } 也是具體方法。概念:包含一個或多個抽象方法的類稱為抽象類。抽象類也必須聲明abstract關(guān)鍵字。抽象類的使用有著一些限制,不能創(chuàng)建抽象類的實例。如果子類實現(xiàn)了抽象方法,則可以創(chuàng)建該子類的實例對象。要是子類也不實現(xiàn)的話,這個子類也是抽象類,也不能創(chuàng)建實例。

              接口是什么東西呢?接口是比抽象類更抽象的類。舉例: public interface Name { }接口里面的方法全都是抽象的,里面的變量全都是final的常量,而且實現(xiàn)接口的類必須將所有的抽象方法全部實現(xiàn)。抽象類里也可以有具體的方法。所以說,接口是最抽象的,其次是抽象類,而具體類本身就是對現(xiàn)實世界的抽象。軟件開發(fā)本身就是將現(xiàn)實世界抽象成計算機世界。

              因為抽象類和接口比具體類抽象,所以使用時他們總是被繼承而被實現(xiàn)的。不過繼承他們的類不只是一個,有很多類實現(xiàn)他們的抽象方法。一個方法有多種實現(xiàn)方式,這里用到了OOP中的多態(tài)性。這使得設計變得非常清晰。因為基類是抽象類或是接口做一個描述,底下繼承的類有若干個,我們只需要對接口或抽象類操作,也用不著管有多少個實現(xiàn)。如果是多人共同開發(fā)的項目的話,是非常有意義的。你自己寫個東西,怎么實現(xiàn)的也不用告訴別人,別人看個接口就夠了。

          接口的實現(xiàn)用關(guān)鍵字implement 而不是extends。如果用了extends的那就是繼承這個接口。那么那個子類也是接口,是原來的子接口。舉個接口的例子吧:

          實踐: //聲明一個接口

              public interface Say {

                  public void sayMessage();

          }

              //兩個實現(xiàn)類

                 public class SayHello implements Say {

                  public void sayMessage() {

                 System.out.println("hello");

              }}

                 public class SayHi implements Say {

                  public void sayMessage() {

                 System.out.println("Hi");

              }}

              //這是一個測試類

                 public class TestSay {

                  public static void main(String[] args) {

          //同樣都是用Say這個接口類型實例,卻可以輸出兩個結(jié)果

                 Say say = new SayHello();

                 say.sayMessage();

                 Say say1 = new SayHi();

                 say1.sayMessage();

              }} 上述源碼打包下載

              接口還有一個重要的作用,我們在面向?qū)ο?/span>那節(jié)課里提過一個概念,java語言中只有單繼承,就是說只能從一個父類繼承。單繼承的好處是,一旦繼承的太多了,改了一個類子類就都變了。牽一發(fā),而動全身。那么如果我們想繼承多個父類的特性怎么辦呢?就用接口吧,這個類可以先繼承一個類,再去實現(xiàn)其它的接口,接口里面都是抽象方法,不會造成,牽一發(fā),而動全身的效應。改變多繼承的特性,也是對C++語言的一項改進

              業(yè)界有一種說法說,與其說java是面向?qū)ο缶幊蹋€不如說它是面向接口編程。強調(diào)的方面是接口的抽象描述性。它也是對C++的一種改進,C++里面沒有接口。所以說java語言適合多人團隊合作的大項目,看一個接口就可以了,后面怎么實現(xiàn)的可以不管。

          posted on 2007-08-07 15:28 王君 閱讀(115) 評論(0)  編輯  收藏 所屬分類: J2SE
          主站蜘蛛池模板: 永安市| 宁海县| SHOW| 固原市| 长治市| 藁城市| 呼图壁县| 莒南县| 会宁县| 辽阳市| 手游| 江达县| 肇庆市| 金乡县| 东港市| 鄯善县| 东莞市| 桐乡市| 南涧| 博罗县| 达拉特旗| 石屏县| 黑河市| 金阳县| 娱乐| 旌德县| 哈巴河县| 赣州市| 井研县| 故城县| 天台县| 平度市| 永修县| 钟祥市| 长寿区| 凭祥市| 乐安县| 莲花县| 兴隆县| 黄龙县| 桂林市|