Java中的接口定義與實例


一、接口定義

Java接口(Interface),是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。

 

接口定義的一般形式為:

 [訪問控制符]interface <接口名> {

類型標識符final 符號常量名n = 常數;

返回值類型  方法名([參數列表]);

      …

}

 

二、接口的特點

1、Java接口中的成員變量默認都是public,static,final類型的(都可省略),必須被顯示初始化,即接口中的成員變量為常量(大寫,單詞之間用"_"分隔)

2、Java接口中的方法默認都是public,abstract類型的(都可省略),沒有方法體,不能被實例化

3、Java接口中只能包含public,static,final類型的成員變量和public,abstract類型的成員方法

4、接口中沒有構造方法,不能被實例化

5、一個接口不能實現(implements)另一個接口,但它可以繼承多個其它的接口

6、Java接口必須通過類來實現它的抽象方法

7、當類實現了某個Java接口時,它必須實現接口中的所有抽象方法,否則這個類必須聲明為抽象類

8、不允許創建接口的實例(實例化),但允許定義接口類型的引用變量,該引用變量引用實現了這個接口的類的實例

9、  一個類只能繼承一個直接的父類,但可以實現多個接口,間接的實現了多繼承.

 

三、接口最簡單的實現方法

package com.frewen.interfacedemo;

    interface SwimInterface{   
       void swim();
    }
    class   Fish{   
       int  fins=4;
    }
    class  Duck {   
      int  leg=2;
      void egg(){};
    }
    
    class Goldfish extends Fish implements  SwimInterface {
        @Override
        public void swim() {
             System.out.println("Goldfish  can swim ");
        }  
    }
    
    class SmallDuck  extends Duck implements  SwimInterface { 
       public void egg(){
           System.out.println("SmallDuck  can lay  eggs ");
       }
       @Override
       public void swim() {
           System.out.println("SmallDuck  can swim ");
       }
    }

    public class InterfaceDemo {        
        public static void main(String[] args) {
            Goldfish goldfish=new Goldfish();
            goldfish.swim();

            SmallDuck smallDuck= new SmallDuck();
            smallDuck.swim();
            smallDuck.egg();
    }
}

 

接口的最主要的作用是達到統一訪問,就是在創建對象的時候用接口創建,【接口名】 【對象名】=new 【實現接口的類】,這樣你像用哪個類的對象就可以new哪個對象了,不需要改原來的代碼。

假如我們兩個類中都有個function()的方法,如果我用接口,那樣我new a();就是用a的方法,new b()就是用b的方法

這個就叫統一訪問,因為你實現這個接口的類的方法名相同,但是實現內容不同

我用接口來定義對象不就可以做到統一訪問了嗎?接口主要針對多個類實現它來說的,要是只有一個類當然可以不用接口了.你這樣想,我做一個USB接口,有個read()抽象方法,然后mp3類實現,U盤類實現,移動硬盤類實現,這樣我用的時候用USB a=new 【類名】;這樣a.read();要是我類名里寫U盤,就讀U盤,寫mp3就讀mp3,而這個名字可以從屬性文件里讀,你寫哪個就用哪個了

在類的繼承中,只能做單重繼承,而實現接口時,一次則可以實現多個接口,每個接口間使用逗號“,”分隔。

這時就可能出現常量或方法名沖突的情況,解決該問題時,如果常量沖突,則需要明確指定常量的接口,這可以通過“接口名.常量”實現。如果出現方法沖突時,則只要實現一個方法就可以了。下面通過一個具體的實例詳細介紹以上問題的解決方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM