Java抽象类(abstract class)和接口(interface)的区别——面试

1.抽象类(abstract class)和接口(interface)的区别:

  1. 抽象类可以有构造方法,接口中不能有构造方法。
  2. 抽象类中可以有普通成员变量,接口中没有普通成员变量。
  3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的, 不能有非抽象的普通方法。
  4. 抽象类和接口都可以包含抽象方法,但是它们的访问类型有所不同。在抽象类中,抽象方法的访类型可以是public、protected和默认类型,而在接口中,抽象方法只能是public类型,并且默认即为public abstract类型。
  5. 抽象类中可以包含静态方法,接口中不能包含静态方法。
  6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访 问类型可以任意,但接口中定义的变量只能是 public static final 类型,并且默认 即为 public static final 类型。
  7. 一个类可以实现多个接口,但只能继承一个抽象类。

2.(拓展)在jdk1.8之后接口新增了一些方法:

  1. 默认方法:允许在接口中定义非抽象方法实现,使用default关键字修饰。
  2. 静态方法:允许在接口中定义静态方法,使用static关键字修饰。
相关推荐
kong@react11 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
hoiii18711 小时前
Qt 实现屏幕截图功能
开发语言·qt·命令模式
未若君雅裁11 小时前
JVM 运行时数据区:程序计数器、堆、虚拟机栈与栈帧
java·jvm
小白学大数据11 小时前
爬虫性能天花板:asyncio赋能 Aiohttp,并发提速 10 倍
开发语言·爬虫·数据分析
凡人叶枫11 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++
凡人叶枫12 小时前
Effective C++ 条款10:令 operator= 返回一个 reference to *this
java·linux·服务器·开发语言·c++·effective c++
摇滚侠12 小时前
JavaSE 和 JavaEE 是什么意思
java·java-ee
想带你从多云到转晴12 小时前
03、JAVAEE---多线程(三)
java
满怀冰雪12 小时前
第04篇-双指针算法-从有序数组到回文判断的高频解法
java·算法
matlabgoodboy12 小时前
计算机java程序代写python代码编写c/c++代做qt设计php开发matlab
java·c语言·python