抽象类和接⼝的区别(使⽤举例)
区别:
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
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论