抽象类和接口的核心区别
来源:互联网 发布:股票回测软件 编辑:程序博客网 时间:2024/05/29 12:16
1.抽象类可以有抽象方法也可以有普通方法,甚至可以没有抽象方法。但是,接口必须有抽象方法。
2.接口可以多继承,而抽象类(针对类)只能单继承。
3.核心区别:
调用者使用动机不同,实现接口是为了使用他规范的某一个行为;
继承抽象类是为了使用这个类的属性和行为.
举例理解如下;
我们知道抽象类是从子类中发现公共部分或者说子类必须实现的部分,然后泛化成抽象类,子类继承该父类即可。但是接口不同,实现它的子类可以不存在任何关系或共同之处。例如三角形、正方形可以抽象成一个几何图形抽象类。因为他们存在相似的地方。而,比如飞的方法。鸟、飞机可以实现飞Fly接口,具备飞的行为,这里我们总不能将鸟、飞机共用一个父类吧!所以说抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的规则而已
阅读全文