抽象类:
1、抽象类只能作为其他类的基类,它不能直接被实例化,而且对抽象类不能用new操作符,抽象类如果含有抽象的变量或值,则它们要么是null类型,要么包含了对非抽象类的实力的引用;
2、抽象类允许包含抽象成员,但这不是必须的(可以允许一个抽象类中没有任何抽象成员),抽象类中可以有非抽象方法;
3、抽象类不能是final类,因为抽象类总是希望被继承,final类又严格禁止继承;
4、如果一个非抽象类从抽象类中派生,则其必须通过覆盖来实现所有继承而来的抽象成员;
5、抽象类可以被抽象类所继承,结果仍是抽象类;
6、抽象类允许被声明。
接口:
1、接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法必须都是public类型的,确保外部使用者能访问它们;
2、接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象方法;
3、接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有static变量;
4、接口中的变量是所有实现类共有的,是不变的,所以变量是final类型的。
接口对修改关闭,对扩展开放。所以接口的方法是public abstract,接口的属性是public static final常量,且必须赋初值。
注意:final和abstract不能同时出现。