抽象类和接口
抽象层次不同
抽象类是对类抽象,而接口是对行为的抽象
抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部行为进行抽象
跨域不同
抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类
抽象类所体现的是一种继承关系,考虑的是子类与父类本质“是不是”同一类的关系
而接口并不要求实现的类与接口是同一本质,它们之间只存在“有没有这个能力”的关系
设计层次不同
抽象类是自下而上的设计,在子类中重复出现的工作,抽象到抽象类中
接口是自上而下,定义行为和规范
多态
多态指的是编译期只知道是个人,具体是什么样的人需要在运行时能确定,同样的参数有可能会有不同的实现。
通过抽象建立规范,在运行时替换成具体的对象,保证系统的扩展性、灵活性。
实现多态主要有以下三种方式:
接口实现
继承父类重写方法
同一类中进行方法重载
不论哪种实现方式,调用者持有的都是基类,不同的实现在他看来都是基类,使用时也当基类用。