JAVA多態學習4

來源:互聯網
上載者:User

標籤:java   介面   抽象類別   

好啦,說好的這一節要開講介面了,嘿嘿,還是老樣子,讀者最好藉助之前說的抽象類別進行比較喔O(∩_∩)O哈哈~

什麼是介面?
介面就是給出一些沒有內容的方法,封裝到一起,到某個類要使用的時候,在根據具體情況把這些方法寫出來。

介面的建立文法:interface 介面名{方法;}文法:class 類名 implements 介面{        方法;        變數;    }

小結:介面是更加抽象的抽象的類,抽象類別裡的方法可以有方法體,介面裡的所有方法都沒有方法體。介面體現了程式設計的多態和高內聚低偶合的設計思想。

介面–注意事項
1、介面不能被執行個體化
2、介面中所有的方法都不能有主體。錯誤文法例:void aaa(){}←(注意不能有花括弧)
介面可以看作更加抽象的抽象類別。
3、一個類可以實現多個介面
4、介面中可以有變數[但變數不能用private和protected修飾]
a、介面中的變數,本質上都是static的而且是final類型的,不管你加 不加static修飾
b、在java開發中,我們經常把常用的變數,定義在介面中,作為全域變數使用
訪問形式:介面名.變數名
5、一個介面不能繼承其它的類,但是可以繼承別的介面

好啦,長氣了,現在我們給個例子,說一下介面的應用

package interfacekak;//Mouth介面//interface Mouth extends Base{       //錯誤,介面只能繼承於介面,而不能繼承與類interface Mouth extends cell{    int a=1;//加不加static都是靜態,不能用private和protected修飾    //聲明了兩個方法    public void eat();//嘴巴吃    public void drink();//嘴巴喝    /*public void sing()                //出錯,    {        System.out.println("大家一起唱..");    };//嘴巴唱    */}//編寫了一個狗類,並實現了Mouth介面//一個重要的原則:當一個類實現了一個介面,要求該類把這個介面的所有方法全部實現class Dog implements Mouth{    public void eat(){        System.out.println("狗要吃東西..");    }    public void drink(){        System.out.println("狗要喝東西..");    }}//介面繼承別的介面class Base{}interface cell{}//編寫了一個貓類,並實現了Mouth介面class Cat implements Mouth{    public void eat(){        System.out.println("貓要吃東西..");    }    public void drink(){        System.out.println("貓要喝水..");    }}//動物類class Animal{    //開始使用Mouth介面    public void activity(Mouth mouth){        mouth.eat();        mouth.drink();    }}public class Interfacekak {    public static void main(String[] args) {        // TODO 自動產生的方法存根        //Mouth.a++;   //a為static,不能改值        System.out.println(Mouth.a);        //建立 animal        Animal animal=new Animal();        //建立dog        Dog dog1=new Dog();        //建立cat        Cat cat1=new Cat();        System.out.println(Dog.a);   //可以類可以提供者的變數        animal.activity(dog1);        animal.activity(cat1);    }}

結果

1、實現介面可以看作是對繼承的一種補充。(繼承是層級式的,不太靈活。修改某個類就會打破繼承的平衡,而介面就沒有這樣的麻煩,因為它只針對實現介面的類才起作用)
2、實現介面可在不打破繼承關係的前提下,對某個類功能擴充,非常靈活。

ps:說好的和抽象類別的對比呢?

大哥,能不能注意一下我這兩篇,抽象類別和介面所說的注意事項,比較一下就好,師傅帶進門,修行靠個人啊。。。。

還不夠的話,介紹一下別人大神的網址,大家去參觀一下吧,小神廟小啊,逃%>_<%
《抽象類別與介面的區別 》
http://blog.csdn.net/ttgjz/article/details/2960451

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

JAVA多態學習4

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.