接口中的所有方法必须都是抽象的,不能有非抽象的普通方法(所有方法在接口中不能有实现);而抽象类中可以包含非抽象的普通方法。
接口中不能有构造方法,抽象类可以有构造方法。
接口中除了static、final变量,不能有其他变量,而抽象类中则不一定。
一个类可以实现多个接口,但只能继承一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。
接口中的抽象方法只能是public类型的,并且默认修饰符是public;抽象方法可以有public、protected和default这些修饰符(抽象方法就是为了被重写所以不能使用private关键字修饰!)。
接口中不能包含静态方法;抽象类中可以包含静态方法。
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
接口和抽象类的相同点:
都可以被继承
都不能被实例化
都可以包含方法声明
派生类必须实现未实现的方法
接口中的所有方法必须都是抽象的,不能有非抽象的普通方法(所有方法在接口中不能有实现);而抽象类中可以包含非抽象的普通方法。
接口中不能有构造方法,抽象类可以有构造方法。
接口中除了static、final变量,不能有其他变量,而抽象类中则不一定。
一个类可以实现多个接口,但只能继承一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。
接口中的抽象方法只能是public类型的,并且默认修饰符是public;抽象方法可以有public、protected和default这些修饰符(抽象方法就是为了被重写所以不能使用private关键字修饰!)。
接口中不能包含静态方法;抽象类中可以包含静态方法。
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
接口和抽象类的相同点:
都可以被继承
都不能被实例化
都可以包含方法声明
派生类必须实现未实现的方法