Java 接口

一、抽象类

  抽象类是普通的类和接口之间的一种中庸之道。

1. 如果一个类包含抽象方法,该类必须被限定为抽象类。

2. 抽象类可以不含任何抽象方法(一般用来阻止产生该类的对象,抽象类不可以用new创建对象,因为调用抽象方法没意义)

3. 抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

4. 如果一个类继承抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。

二、接口

  interface表示一个完全抽象的类。

1. 接口中的变量会被隐式地指定为public static final变量。

2. 接口中只能存在public abstract 方法

抽象类和接口的区别

1.语法层面上的区别

1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

2.设计层面上的区别

1)抽象类是对一种事物的抽象,而接口是对行为的抽象。

2)简言之抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。

3)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计,即如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。

interface Alarm {
    void alarm();
}
 
abstract class Door {
    void open();
    void close();
}
 
class AlarmDoor extends Door implements Alarm {
    void oepn() {
    }
    void close() {
    }
    void alarm() {
    }
}

 

posted @ 2017-06-16 17:11  安小  阅读(158)  评论(0)    收藏  举报