[Java 基础]接口
抽象類和抽象方法
?
抽象方法 在面向?qū)ο缶幊陶Z言中抽象方法指一些只有方法聲明而沒有具體方法體的方法抽象方法一般存在于抽象類或接口中。 java中,抽象方法就是以 abstract 修飾的方法,只需要聲明而不需要實現(xiàn) abstract?void?f();?
抽象類
包含抽象方法的類叫抽象類。
abstract?class?Sample?{????private?int?param1;
????abstract?void?f1();
????void?f2()?{}
} 注:
1、如果一個類包含有抽象方法,則必須限定為抽象類,否則編譯器會報錯。
2、抽象類不能實例化,否則編譯器會報錯。
?
?
接口什么是接口
java中,接口是以 interface 來修飾的。
接口可以被視為一個比“抽象類”更加抽象的類。
實現(xiàn)接口
一個類遵循某個特定或一組接口,必須使用 implements 關(guān)鍵字。
????void?fly();
}
class?Bird?implements?Fly?{
????@Override
????public?void?fly()?{
????????System.out.println("展翅飛翔");
????}????
}
注:接口中的方法必須是 public 類型,可以不顯示地指定。但是如果指定為其他類型,編譯器會報錯。
擴(kuò)展接口
玩過游戲的朋友們,肯定熟悉這個模式。
一名戰(zhàn)士需要具備戰(zhàn)斗能力。一名騎士不僅需要具備戰(zhàn)斗能力,也需要具備騎術(shù)。
更進(jìn)階的圣騎士則還需要具備法師一般的魔法能力。這個關(guān)系可以抽象成以下代碼:
????void?fight();
}
interface?Knight?extends?Warrior?{
????void?riding();
}
interface?Enchanter?{
????void?magic();
}
//?Paladin類實現(xiàn)多個接口,需要包含這些接口的所有方法
class?Paladin?implements?Knight,?Enchanter?{
????public?void?fight()?{}
????public?void?riding()?{}
????public?void?magic()?{}
}
多重繼承
請考慮如下圖的情況,一名在職研究生既是職工,也是學(xué)生,也是研究生。如果我們要在代碼中實現(xiàn)這個繼承關(guān)系,該如何去做?
C++中支持多重繼承,但是JAVA中不支持多重繼承,以下方式是錯誤的。一個類不能擴(kuò)展多個類。
class?Student?extends?Person?{};
class?Postgraduate?extends?Student?{};
class?Employee?extends?Person?{};
class?OnJobPostgraduate?extends?Postgraduate,?Employee?{};
JAVA中雖然不支持多重繼承,但是可以通過接口實現(xiàn)類似的行為。一個類可以實現(xiàn)多個接口。
interface?Student?extends?Person?{};
interface?Postgraduate?extends?Student?{};
interface?Employee?extends?Person?{};
class?OnJobPostgraduate?implements?Postgraduate,?Employee?{};
?
轉(zhuǎn)載于:https://www.cnblogs.com/jingmoxukong/p/4226735.html
總結(jié)
以上是生活随笔為你收集整理的[Java 基础]接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可以无卡转账吗
- 下一篇: 经纬度转换度分秒工具