1.抽象类和接口
1)有无子类共享的实例变量
2)有无子类共享的方法体
3)子类可否通过super();调用到基类的构造函数
4)继承个数
2.抽象类和常规类
有无维护的意义,即基类实例对象有无存在的现实意义
3.究竟应该是有interface、abstract class还是一般的class?
1)Interface更优于abstract,因为程序员可以以此撰写出“可被向上转型为多个基类型别”的class,从而类似实现c++中的多继承
2)若撰写的基类可以不带任何函数定义或任何成员变量,应优先考虑用interface
3)必须带有函数定义或成员变量时,使用abstract class
4)基类对象在需求分析/需求世界中有存在的现实意义,用class