一确买、接口(interface)
1.1 初識接口
我們都知道創(chuàng)建一個(gè)類特別簡單斤讥,同樣,我們創(chuàng)建接口也如此湾趾,只需將class替換成interface即可芭商。
/**
* 創(chuàng)建一個(gè)接口:錢
*/
public interface IMonery{
/**
* 印鈔操作
* @param number 數(shù)量
*/
void printMonery(int number);
/**
* 花錢
*/
void spendMonery();
}
就是如此簡單派草,創(chuàng)建的接口,實(shí)質(zhì)上就是一個(gè)完全的抽象類(被abstract修飾的類)铛楣。
所以我們所定義的方法名近迁、形式參數(shù)名和返回類型都是可以自行定義,但是不允許含有方法體簸州,并且Java規(guī)定實(shí)現(xiàn)(使用implements)了該接口后鉴竭,就必須同時(shí)重寫該接口中所定義的所有方法。如下:
/**
* 新建類: 你
* 并且實(shí)現(xiàn)了IMonery接口
*/
public class Yous implements IMonery{
@Override
public void printMonery(int number) {
}
@Override
public void spendMonery() {
}
}
這樣岸浑,你就輕松具備了印鈔和花錢的異能了拓瞪,哈哈。
1.2 接口與抽象類
上面我提到了接口實(shí)質(zhì)上就是一個(gè)完全被抽象的類助琐。在這里我們小聊一會抽象類。
被abstract修飾的類就叫抽象類
被abstract修飾的方法就叫抽象方法
普通類繼承抽象類后面氓,就必須重寫父類中的抽象方法兵钮。
如果是抽象類繼承抽象類,那我們就可以選擇不重寫舌界、部分重寫或完全重寫父類中的抽象方法
同樣道理掘譬,如果是抽象類實(shí)現(xiàn)了某個(gè)接口,原理同上呻拌。
/**
* 新建抽象類: 我自己
* 在這里我選擇了不重寫接口中的任何方法
*/
public abstract class MySelf implements IMonery{
}
1.3 接口的多重繼承
瞬間有點(diǎn)小崩潰葱轩,不是說類只能單一繼承嗎?沒錯(cuò)呀藐握,類是只能單一繼承靴拱,但是接口稍稍有點(diǎn)不同,它具備多重繼承的能力猾普,是不是感覺很棒袜炕。該下代碼你只需花上一分鐘:
/**
* 創(chuàng)建一個(gè)接口:錢
*/
public interface IMonery{
/**
* 印鈔操作
* @param number 數(shù)量
*/
void printMonery(int number);
/**
* 花錢
*/
void spendMonery();
}
/**
* 創(chuàng)建新接口:識別
*/
public interface IIdentify{
/**
* 識別鈔票的方法
*/
void identify();
}
/**
* 創(chuàng)建一個(gè)接口: 賺錢
*
* 高能點(diǎn):這里接口進(jìn)行了多重繼承,你可得仔細(xì)哦
*
*/
public interface IEarnMonery extends IMonery, IIdentify{
/**
* 賺錢動作
*/
void earnMonery();
}
/**
* 創(chuàng)建新類初家,并實(shí)現(xiàn)IEarnMonery接口
*/
public class SuperYours implements IEarnMonery{
@Override
public void earnMonery() {
}
@Override
public void printMonery(int number) {
}
@Override
public void spendMonery() {
}
@Override
public void identify() {
}
}
此一時(shí)偎窘,彼一時(shí);你現(xiàn)在的功能已經(jīng)特別強(qiáng)大了溜在,集“印鈔”陌知、“花錢”、“賺錢”和“識別真假鈔票”于一體掖肋,你想想都開心啦~
總之仆葡,接口的多重繼承,只需在接口之間用逗號隔開即可培遵。