Java 基础面试题, 为什么 Java 不支持多重继承?
Java 基础面试题, 为什么 Java 不支持多重继承?
QA
Step 1
Q:: 为什么 Java 不支持多重继承?
A:: Java 不支持多重继承的主要原因是为了避免“钻石问题”,即在多重继承中,如果两个父类有相同的方法或属性,子类将无法确定应该继承哪一个的实现。为了解决这一问题,Java 引入了接口(Interface),允许类实现多个接口,从而避免了多重继承的复杂性和潜在的冲突。
Step 2
Q:: 接口和抽象类的区别是什么?
A:: 接口(Interface)是一个完全抽象的类,没有任何实现,只定义方法签名。一个类可以实现多个接口。抽象类(Abstract Class)可以包含抽象方法(没有实现)和具体方法(有实现)。类只能继承一个抽象类,但可以实现多个接口。使用抽象类通常是为了共享代码,而使用接口是为了定义类的能力。
Step 3
Q:: 什么是多态性,如何在 Java 中实现?
A:: 多态性是面向对象编程中的一个核心概念,指对象可以以多种形式呈现。它有两种实现方式:编译时多态性(通过方法重载实现)和运行时多态性(通过方法重写和接口实现)。在 Java 中,运行时多态性是通过父类引用指向子类对象,子类对象调用重写的方法时,实际运行的是子类的方法。
Step 4
Q:: 什么是方法重载(Overloading)和方法重写(Overriding)?
A:: 方法重载是指在同一个类中,方法名称相同但参数列表不同(参数的类型、数量、顺序不同)。方法重写是指子类重写父类中的方法,方法签名必须与父类方法一致。重载是在编译时决定的,而重写是在运行时决定的。
Step 5
Q:: 什么是接口默认方法(Default Method),它为什么被引入?
A:: 接口默认方法是在接口中定义的一种有默认实现的方法。它是从 Java 8
开始引入的,主要目的是为了在接口中添加新的方法而不影响实现该接口的已有类,确保向后兼容性。通过默认方法,接口可以扩展而不会破坏现有的代码。