为什么有了接口还要增加一层抽象类?

x33g5p2x  于2021-12-29 转载在 其他  
字(0.8k)|赞(0)|评价(0)|浏览(133)

接口:

抽象类:

区别:

 表象:

 深层次理解:

类图

使用抽象类前

使用抽象类后

为什么有了接口还要增加一层抽象类?

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

接口:

接口里的方法和抽象类中的方法一样,它的方法是抽象的,也就是说接口是不能具体化成对象的,

抽象类:

所谓抽象类是指只声明方法的存在而不去实现它的类,抽象类不能实例化,也就是不能创建对象。

抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能定义成抽象类,抽象类里可以没有抽象方法。

区别:

   表象:

抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但是可以实现多个接口等。

   深层次理解:

**1.类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。**接口是对类的局部(行为)进行抽象,而抽象类是对类整体(字段、属性、方法)的抽象。不论接口、抽象类、类、甚至对象,都是在不同层次、不同角度进行抽象的结果。他们的共性就是抽象。

如果行为跨域不同类的对象(飞机、麻雀、超人),可使用接口;对于一些相似的类的对象(猫狗),可继承抽象类。

2.抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法如何实现还不确定,预先定义。

3.抽象类是自底向上抽象出来的,而接口则是自顶向下设计出来的。

类图

使用抽象类前

使用抽象类后

 为什么有了接口还要增加一层抽象类?

  让抽象类去实现接口,而不是每个实现类去实现接口,实现类一致的行为(或者说大部分一致的行为)在抽象类中进行实现,而不一致的行为(或者一小部分不一致的行为),在抽象类中写成抽象方法,让子类去重写,减少子类重写接口所有方法的负担。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

相关文章