一、接口(interface)
1.1 初识接口
我们都知道创建一个类特别简单,同样,我们创建接口也如此,只需将class替换成interface即可。

/**
  * 创建一个接口:钱
  */
public interface IMonery{

    /**
     * 印钞操作
     * @param number    数量
     */
    void printMonery(int number);

    /**
     * 花钱
     */
    void spendMonery();
}

就是如此简单,创建的接口,实质上就是一个完全的抽象类(被abstract修饰的类)。
所以我们所定义的方法名、形式参数名和返回类型都是可以自行定义,但是不允许含有方法体,并且Java规定实现(使用implements)了该接口后,就必须同时重写该接口中所定义的所有方法。如下:

/**
  * 新建类: 你
  * 并且实现了IMonery接口
  */
public class Yous implements IMonery{

    @Override
    public void printMonery(int number) {

    }

    @Override
    public void spendMonery() {

    }
}

这样,你就轻松具备了印钞和花钱的异能了,哈哈。

1.2 接口与抽象类
上面我提到了接口实质上就是一个完全被抽象的类。在这里我们小聊一会抽象类。
被abstract修饰的类就叫抽象类
被abstract修饰的方法就叫抽象方法
普通类继承抽象类后,就必须重写父类中的抽象方法。
如果是抽象类继承抽象类,那我们就可以选择不重写、部分重写或完全重写父类中的抽象方法
同样道理,如果是抽象类实现了某个接口,原理同上。

/**
  * 新建抽象类: 我自己
  * 在这里我选择了不重写接口中的任何方法
  */
public abstract class MySelf implements IMonery{

}

1.3 接口的多重继承
瞬间有点小崩溃,不是说类只能单一继承吗?没错呀,类是只能单一继承,但是接口稍稍有点不同,它具备多重继承的能力,是不是感觉很棒。该下代码你只需花上一分钟:

/**
  * 创建一个接口:钱
  */
public interface IMonery{

    /**
      * 印钞操作
      * @param number    数量
      */
    void printMonery(int number);

    /**
      * 花钱
      */
    void spendMonery();
}

/**
  * 创建新接口:识别
  */
public interface IIdentify{
    /**
      * 识别钞票的方法
      */
    void identify();
}

/**
  * 创建一个接口: 赚钱
  * 
  * 高能点:这里接口进行了多重继承,你可得仔细哦
  * 
  */
public interface IEarnMonery extends IMonery, IIdentify{
    /**
      * 赚钱动作
      */
    void earnMonery();

}

/**
  * 创建新类,并实现IEarnMonery接口
  */
public class SuperYours implements IEarnMonery{

    @Override
    public void earnMonery() {

    }

    @Override
    public void printMonery(int number) {

    }

    @Override
    public void spendMonery() {

    }

    @Override
    public void identify() {

    }
}

此一时,彼一时;你现在的功能已经特别强大了,集“印钞”、“花钱”、“赚钱”和“识别真假钞票”于一体,你想想都开心啦~

总之,接口的多重继承,只需在接口之间用逗号隔开即可。




silencezwm
15 声望1 粉丝