【Java 基礎篇】【第六課】接口interface

Java提供的這個interface的語法,目的就是將接口從類中剝離出來,構成獨立的主體。

首先加入我們定義了這個杯子接口

interface Cup
{
    void addWater(int w);
    void drinkWater(int w);
}

interface當中,注意亮點:

1.不需要定義方法的主體

2.不需要說明的可見性(默認爲public)

 

在一個的類中實施接口,例如下面的MusicCup

class MusicCup implements Cup
{
    public void addWater(int w)
    {
        water = water + w;
    }
    
    public void drinkWater(int w)
    {
        water = water - w;
    }
    
        private int water = 0;
}

這裏需要注意的就是:一旦在類中實施了某個interface,必須在該類中定義interface的所有方法(addWater()和drinkWater())。類中的方法需要與interface中的方法原型相符。否則,Java將報錯。

interface接口存在的意義:

我們使用了interface,但這個interface並沒有減少我們定義類時的工作量。我們依然要像之前一樣,具體的編寫類。我們甚至於要更加小心,

不能違反了interface的規定。既然如此,我們爲什麼要使用interface呢?

 

事實上,interface就像是行業標準。一個工廠(類)可以採納行業標準 (implement interface),也可以不採納行業標準。

但是,一個採納了行業標準的產品將有下面的好處:

更高質量: 沒有加水功能的杯子不符合標準。

更容易推廣: 正如電腦上的USB接口一樣,下游產品可以更容易銜接。

 

如果我們已經有一個Java程序,用於處理符合Cup接口的對象,比如領小朋友喝水。那麼,只要我們確定,我們給小朋友的杯子(對象)實施了Cup接口,就可以確保小朋友可以執行喝水這個動作了。

至於這個杯子(對象)是如何具體定義喝水這個動作的,我們就可以留給相應的類自行決定 (比如用吸管喝水,或者開一個小口喝水)。

 

多個接口:

一個類可以實施不止一個接口interface。

例如我們還有一個interface:

interface Musicplayer
{
    void play();
}

所以真正的MusicCup還需要實施這個接口,所以如下所示:

class MusicCup implements Cup, MusicPlayer
{
    public void addWater(int w)
    {
        water = water + w;
    }
    
    public void drinkWater(int w)
    {
        water = water - w;
    }
    
    public void play()
    {
        System.out.println("dun...dun...dun...");
    }
        
    private int water = 0;
}

就這些,好了附帶一個源碼大家看吧:

interface Cup
{
    void addWater(int w);
    void drinkWater(int w);
}

interface MusicPlayer
{
    void play();
}


/*這個類如果implements Cup了,那麼Cup中定義的方法, 在MusicCup
中必須要有addWater和drinkWater,否則會報錯,這點和c++不一樣*/
class MusicCup implements Cup, MusicPlayer
{
    public void addWater(int w)
    {
        water = water + w;
        System.out.println("water is " + water);
    }
    
    public void drinkWater(int w)
    {
        water = water - w;
        System.out.println("water is " + water);
    }
    
    public void play()
    {
        for (int i = 0; i <water; i++)
        {
            System.out.println("dun...dun...dun...");
        }
    }
    
    public int waterContent()
    {
        return water;
    }    
    
    private     int water = 0;
}

public class test 
{
    public static void main(String[] args)
    {
        MusicCup mycupCup = new MusicCup();
        mycupCup.addWater(5);
        mycupCup.play();
        mycupCup.drinkWater(3);
        mycupCup.play();
        System.out.println("water content is " + mycupCup.waterContent());    
    }
}

輸出結果:

water is 5
dun...dun...dun...
dun...dun...dun...
dun...dun...dun...
dun...dun...dun...
dun...dun...dun...
water is 2
dun...dun...dun...
dun...dun...dun...
water content is 2


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章