標籤: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