接口、抽象类和实现类

1,接口(interface):泛指供别人调用的方法或函数

接口中的方法会被隐式的指定为public abstract方法且只能是public abstract方法,并且接口中的方法都不能有具体实现,必须都是抽象方法。 意义: 规范、扩展、回调。

2,抽象类

抽象方法:必须用abstract关键字修饰,只有声明,没有具体实现。 因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象(不能实例化),可以通过继承实现它的方法。 意义: 为其他子类提供一个公共的类型 封装子类中重复定义的内容 定义抽象方法,子类虽然有不同的实现,但是定义是一致的。

3,接口与抽象类的区别

设计层面上:抽象类是对事物的抽象,即类抽象,而接口是对行为的抽象。

4,实现类

可以继承接口和抽象类,继承抽象类关键字extends,继承接口关键字implements,且必须实现所有抽象类和接口所有方法。

5,门(door)和警报(alram)的例子

门都有open()和close()两个动作: 将这三个功能都放在抽象类里面,但是这样一来所有继承于这个抽象类的子类都具备了报警功能,但是有的门不具备报警功能。 将三个功能都放在接口里面,需要用到报警功能的类就需要实现这个接口中的open()和close(),也许这个类根本就不具备open()和close()这个两个功能,比如火灾报警器 因为open()和close()属于门的本身特性,而alarm()属于延伸的附加行为,最好的解决办法是将单独将报警器设计为一个接口,包含alarm()方法,door设计为单独的一个抽象类,包含open()和close()方法,再设计一个报警门继承Door类和实现Alarm接口

interface Alarm{
void alarm();
}`在这里插入代码片`
abstract class Door{
void open();
void close();
}
class AlarmDoor extends Door implements Alarm{
void open(){
//...
}
void close(){
//...
}
void alarm(){
//...
}
}
经验分享 程序员 微信小程序 职场和发展