在Java中,实现 抽象的机制有2种:抽象类(abstract class)和接口(Interface)
![](https://img.haomeiwen.com/i1935101/c188cbe897427ce8.png)
1、抽象类(abstract class)
![](https://img.haomeiwen.com/i1935101/4b6ceb08191d3bdd.png)
2、 接口(Interface)
![](https://img.haomeiwen.com/i1935101/488a18c9c802690e.png)
3、两者区别
![](https://img.haomeiwen.com/i1935101/3a00f46cd364c11c.png)
- 实例讲解
下面给出1个简单的例子,让大家更好地去理解二者的区别 & 应用场景
4.1 需求描述
需求1:有1类门,其本质功能 = 开门 & 关门
需求2:为上述这类门增加1个报警器,可进行报警
4.2 需求实现
该需求的实现方案有3种,均可完成需求:
1=只使用抽象类、2=只使用接口、3=同时使用抽象类 & 接口
具体请看如下:
// 方案1:只使用抽象类
abstract class Door{
abstract void open();
abstract void close();
abstract void alarm();
}
// 具体使用时
class AlarmDoor extends Door {
void open(){}
void close(){}
void alarm(){}
}
// 方案2:只使用接口
interface Door{
void open();
void close();
void alarm();
}
// 具体使用时
class AlarmDoor implements Door {
void open(){}
void close(){}
void alarm(){}
}
// 方案3:同时使用抽象类 & 接口
// 对于需求1 = 抽象1类事物,即 使用抽象类
abstract class Door{
abstract void open();
abstract void close();
}
// 对于需求2 = 抽象事物中的某个行为, 即 使用 接口
interface Alarm{
void alarm();
}
// 具体使用时
class AlarmDoor extends Door implements Alarm{
void open(){}
void close(){}
void alarm(){}
}
虽然3种实现方式均可完成需求,可是,明显使用方案3 更加符合 抽象类 & 接口的使用.
网友评论