接口与抽象类的异同点

接口与抽象类的相同点

1.都不能实例化,因此想要调用其方法,必须要借助多态。
2.都可以被继承
3.这应该算是抽象方法的属性,就是不能有方法实体,只能靠子类去重写。

接口与抽象类的不同点

1.成员区别:
接口中的成员变量前面都是默认带public static final的,属于是常量,成员方法都默认带public abstract,只有抽象方法。
抽象类的成员变量和成员方法的默认访问权限为default。因此抽象类还是有构造方法的,而且抽象类的子类还是可以调用一些方法的。
2.关系区别:
类与类的关系,类只能单继承,多重继承,但是不能多继承。
类与接口的关系,类可以实现接口,可以单实现,也可以多实现,还能一边继承类,一边多实现接口。
接口与接口的关系,接口之间可以多继承。
3.设计理念区别:
继承主要是从属性和行为上去设计的,最主要的区别就是一个类的多个子类之间都是继承了父类的一些属性的,说明他们多少是相似的,
但是接口不同,接口是针对行为设计的,就像下面的例子,目的是将所有具有相同功能,但是本身却没有任何关系的类的功能抽象出来。

接口存在的意义

接口就是把具有相同功能,但是本身却没有任何关系的类的功能抽象出来,然后让我们自定义具体的实现。比如说西瓜和鸡都是可以吃的,但是他们互相之间是几乎没有任何关系的,接口就是负责把他们的"被吃"这个行为给抽象出来。

看到一本书这样写到:“接口就是一份契约,由类实现契约。契约中我编写了某些大的方针与前提,而签了约的类可以具体问题具体分析来实现自己的功能”

Collection为什么设计成接口而不是抽象类

这是在一开始学到Collection的时候想到的,在这弄懂了接口与抽象类的区别之后,应该能够明白。
首先接口更加抽象,集合这种概念,一堆苹果有集合,一群学生有集合,所有的都可以有集合,但是他们并不一定有相同的属性。其次,一个类是可以实现多个接口的,操作就更加灵活,但是抽象类就只能单继承,不太好使。

posted @ 2021-08-27 16:38  Lanezzz  阅读(338)  评论(0)    收藏  举报