一、接口(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() {
}
}
此一时,彼一时;你现在的功能已经特别强大了,集“印钞”、“花钱”、“赚钱”和“识别真假钞票”于一体,你想想都开心啦~
总之,接口的多重继承,只需在接口之间用逗号隔开即可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。