Java中的抽象类

一、抽象类与普通类的区别

1.抽象类不能被实例化

2.抽象类可以有构造函数

3.抽象方法只需申明,无需实现,但抽象类中可以存在抽象方法

4.抽象方法不能被private修饰

5.含有抽象方法的类必须被声明为抽象类

6.抽象类的子类必须实现抽象类中所有抽象方法,否则这个子类也必须是抽象类

7.抽象类不能被final修饰

二、抽象类与接口的区别

1.抽象类可以有默认的方法实现,而接口完全抽象,无方法实现

2.抽象类可以有构造器,接口不能

3.抽象方法可以被default、protected、public修饰,接口只能被public修饰

4.抽象类中可以存在main方法

5.抽象类比接口快

6.a. 抽象类是对一种事务的抽象,是对整个类进行抽象,包括属性,行为(方法)。接口是对行为(行为)的抽象。如果一个类继承或实现了某个抽象类,那么一定是抽象类的种类(拥有同一种属性或行为的类)。

 b. 设计层面不同,抽象类作为很多子类的父类,是一种模板设计,而接口是一种规范,它是一种辐射式设计,也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象方法中添加实现,子类可以不用变更,而对于接口不行,如果接口进行了变更,那么实现它的类都需要做变更。

三、什么情况下使用接口?什么情况下使用抽象类?

1.使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。

2.当2个或多个类中有重复部分的时候,我们可以抽象出来一个基类,如果希望这个基类不能被实例化,就可以把这个基类设计成抽象类。

3.当仅仅描述一组方法或规则时使用接口

 

 

参考资料:https://www.cnblogs.com/zhangpengnike/p/5798145.html

https://www.cnblogs.com/dolphin0520/p/3811437.html

posted @ 2019-06-19 14:51  莫等、闲  阅读(387)  评论(0编辑  收藏  举报