Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Java 接口与 C++ 抽象类有什么异同?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

题目里的“C++ 虚类”通常指含纯虚函数的抽象类,它与 Java 接口都能定义需要具体类型实现的行为,并支持多态。但二者不是同一种结构:C++ 抽象类可以包含实例数据、构造函数和具体实现;Java 接口不能携带普通对象的实例字段或构造函数。

讲清原理

Java 接口除了抽象方法,还能包含 default、static 和 private 方法,因此不能沿用“接口只能有方法声明”的旧结论。接口中的字段是常量性质的字段,不是每个实现对象各有一份的可变实例状态。

Java 类只能直接继承一个类,但能实现多个接口;C++ 支持多重类继承,带来不同的对象布局和歧义处理问题。C++ 还涉及确定性析构和对象所有权,不能拿 Java 的 finalize 当作对应机制。

例子与易错点

Java 的 interface Printable { void print(); } 表达一种能力。C++ 中用纯虚函数设计多态基类时,若需要通过基类指针删除派生对象,通常还应设计合适的虚析构函数。

比较时围绕状态、默认实现、继承与生命周期分别回答,不要笼统说“两者都只是接口”。

相关题:第 2 题、第 19 题、第 29 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。