上篇博客我们讲解了抽象类和接口的主要的一些特性(博客链接如下:CSDN),在Java的面试中,经常有这样一个重要的面试题就是,讲述一下抽象类和接口的区别!!!
核心区别:
这样的普通方法和字段可以被子类直接使用
(
不必重写
),
而接口中不能包含普通方法, 子类必须重写所有的抽象方法
对于抽象类A来说,可以在内部定义普通成员变量和普通成员方法,抽象方法只是抽象类的必要条件
对于接口A来说,只能定义抽象方法,普通成员变量和普通成员方法都不能定义,抽象方法是接口的充要条件
其他区别
1.结构组成
抽象类:包括普通类和抽象方法(抽象方法可以没有)
接口:包括抽象方法和全局变量(抽象方法必须有,子类需要继承且重写,定义的成员变量默认为public static final)
2.权限
抽象类:各种权限限定修饰符(抽象方法时不能用private,static,final修饰)
接口:只能是public(因为需要对接口中的所有抽象方法重写)
3.子类的使用
抽象类:使用extends关键字继承抽象类
接口:使用implements关键字实现接口(接口不能单独使用,必须通过实现类来进行实现)
4.关系
抽象类:一个抽象类可以实现若干个接口(当需要继承多个接口时,用逗号隔开)
接口:接口不能继承抽象类,但是接口可以实现对多个接口的继承(当需要继承多个接口时,用逗号隔开,且用类实现时,需要重写所有接口中的抽象方法)
5.子类限制
抽象类:一个子类只能继承一个抽象类(类的继承不支持多继承)
接口:一个子类可以实现对多个接口的继承(使用时需要用逗号隔开)
表格总结如下:
区别 | 抽象类 | 接口 |
结构组成 | 包括普通类和抽象方法 | 包括抽象方法和全局变量 |
权限 | 各种权限限定修饰符 | 只能是public |
子类的使用 | 使用extends关键字继承抽象类 | 使用implements关键字实现接口 |
关系 | 一个抽象类可以实现若干个接口 | 接口不能继承抽象类,但是接口可以实现对多个接口的继承 |
子类限制 | 一个子类只能继承一个抽象类 | 一个子类可以实现对多个接口的继承 |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89460.html