抽象類和介面的區別(使用舉例)
阿新 • • 發佈:2019-02-09
區別:
1、抽象類代表的是“is-a”的關係,介面所代表的是"like-a"的關係。
2、介面實際上是一個特殊的抽象類。
3、抽象類可以有抽象方法,也可以有例項方法
介面中所有的方法都是公開抽象方法
4、具體類使用抽象類,用extends(繼承)
具體類使用介面,用implements(實現)
5、具體類實現介面,必須重寫介面中的所有方法!
6、抽象類可以有自己的構造方法,介面不能有構造方法
舉例:
抽象類:
abstract class Door { public abstract void open(); public abstract void close(); }
介面:
interface Door{
public abstract void open();
public abstract void close();
}
如果需要新增一個報警alarm()的功能,該如何實現?
如果把alarm()放到抽象類裡,但是有的門不一定具備報警的功能,所以此路不通!
如果把alarm()放到接口裡,需要用到報警功能的類就需要實現這個介面中的open( )和close( ),也許這個類根本就不具備 open( )和close( )這兩個功能,比如火災報警器。所以此路也不通!
以下為解決辦法:
interface Alarm{ void alarm(); } abstract class Door{ void open(); void close(); } class AlarmDoor extends Door implements Alarm{ void open(){ //TODO } void close(){ //TODO } void alarm(){ //TODO } }