(1) abstract(抽象)类和接口都可以有abstract(抽象)方法。
(2) 接口中只可以有常量,不能有变量,而abstract类中既可以有常量也可以有变量。
(3) abstract类中也可以有非abstract方法,接口不可以。
在设计程序时应当根据具体的分析来确定是使用抽象类还是接口。abstract类除了提供重要的需要子类重写的abstract方法以外,还提供了子类可以继承的变量和非abstract方法。
如果某个问题需要使用继承才能更好地解决,比如:子类除了需要重写父类的abstract方法以外,还需要从父类继承一些变量或继承一些重要的非abstract方法,就可以考虑用abstract类。如果某个问题不需要继承,只是需要若干个类给出某些重要的abstract方法的实现细节,就可以考虑使用接口。
注意:JDK1.8接口支持静态方法和默认方法。
1)接口不能用于实例化对象。
2)接口没有构造方法。
3)接口中所有的方法必须是抽象方法。
4)接口不能包含成员变量,除了static和final变量。
5)接口不是被类继承,而是要被类实现。
6)接口支持多继承。
默认方法就是接口可以有实现方法且不需要实现类去实现其方法,只需要在方法名前面加上default关键字即可实现默认方法。默认方法提供了一种扩展接口的方法,而且还不会破坏现有代码。
(1) 接口默认方法、静态方法可以有多个。
(2) 默认方法通过实例调用,静态方法通过接口名调用。
(3) default关键字只能用在接口中。
(4) 默认方法可以被继承,如果继承多个接口,多个接口都定义多个同样的默认方法,实现类需要重写默认方法,不然会报错。
(5) 静态方法不能被继承和覆盖,所以只能被具体所在的接口调用。
注意:JDK1.9以后,允许将方法定义为private,使得某些复用的代码不会把方法暴露出去。
本文固定URL:https://www.dotcpp.com/course/798
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程