1、接口(interface)
1.1 初識接口
咱們都知道建立一個類特別簡單,一樣,咱們建立接口也如此,只需將class替換成interface便可。ide
/** * 建立一個接口:錢 */ public interface IMonery{ /** * 印鈔操做 * @param number 數量 */ void printMonery(int number); /** * 花錢 */ void spendMonery(); }
就是如此簡單,建立的接口,實質上就是一個徹底的抽象類(被abstract修飾的類)。
因此咱們所定義的方法名、形式參數名和返回類型都是能夠自行定義,可是不容許含有方法體,而且Java規定實現(使用implements)了該接口後,就必須同時重寫該接口中所定義的全部方法。以下:.net
/** * 新建類: 你 * 而且實現了IMonery接口 */ public class Yous implements IMonery{ @Override public void printMonery(int number) { } @Override public void spendMonery() { } }
這樣,你就輕鬆具有了印鈔和花錢的異能了,哈哈。code
1.2 接口與抽象類
上面我提到了接口實質上就是一個徹底被抽象的類。在這裏咱們小聊一會抽象類。
被abstract修飾的類就叫抽象類
被abstract修飾的方法就叫抽象方法
普通類繼承抽象類後,就必須重寫父類中的抽象方法。
若是是抽象類繼承抽象類,那咱們就能夠選擇不重寫、部分重寫或徹底重寫父類中的抽象方法
一樣道理,若是是抽象類實現了某個接口,原理同上。blog
/** * 新建抽象類: 我本身 * 在這裏我選擇了不重寫接口中的任何方法 */ 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() { } }
此一時,彼一時;你如今的功能已經特別強大了,集「印鈔」、「花錢」、「賺錢」和「識別真假鈔票」於一體,你想一想都開心啦~接口
總之,接口的多重繼承,只需在接口之間用逗號隔開便可。get