【Java 基础篇】【第六课】接口interface

Java提供的这个interface的语法,目的就是将接口从类中剥离出来,构成独立的主体。java

首先加入咱们定义了这个杯子接口c++

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

interface当中,注意亮点:ide

1.不须要定义方法的主体spa

2.不须要说明的可见性(默认为public)orm

 

在一个的类中实施接口,例以下面的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接口存在的意义:ci

咱们使用了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 5dun...dun...dun...dun...dun...dun...dun...dun...dun...dun...dun...dun...dun...dun...dun...water is 2dun...dun...dun...dun...dun...dun...water content is 2

相关文章
相关标签/搜索