java 接口与抽象的区别
抽象类是对事物的抽象,包括属性和行为。而接口只是对行为的抽象。
比如鸟和飞机,都是会飞的事物,但是不能将他们将飞定义为一个类。此时fly()可以定义为一个接口。
下面的代码就能说明这个问题,door是一个抽象类,alarm是一个接口。当想要描述一个响铃的门,就可以将抽象类和接口结合起来描述。
interface Alram {
void alarm();
}
abstract class Door {
void open();
void close();
}
class AlarmDoor extends Door implements Alarm {
void oepn() {
//....
}
void close() {
//....
}
void alarm() {
//....
}
}
抽象类之所以称为抽象,也意味着他是不能实例化为对象的,不过普通类有的功能它都有,在运用的时候直接类名.方法/属性即可
接口也是一样的,因为是一个行为的抽象,本质上也是抽象的,所以不能实例化为对象。运用的时候也是直接类名.方法即可。接口必须有子类,即在子类中实现该具体的方法(implements)