Java基础面试题拷打(2)

1. 为什么Java不支持多重继承?

解析:

Java不支持类的多重继承,主要是为了避免菱形继承问题。如果一个类同时继承多个父类,而这些父类又继承自同一个父类,就可能导致方法调用的二义性。

例如:A被B和C继承,而D又同时继承B和C,此时调用A中的方法时编译器无法确定使用哪一个父类的实现。

Java的解决方案:

类只能单继承(extends),但可以实现多个接口(implements),从而既避免冲突,又能实现类似多继承的效果。

2. Java面向对象三大特性是什么?

解析:

Java面向对象三大特性是:封装、继承、多态。

封装:将属性和方法封装在类中,通过private等访问控制符隐藏内部实现,通过getter/setter访问,提高安全性。

继承:子类可以继承父类的属性和方法,从而实现代码复用和功能扩展。

多态:同一个方法在不同对象中可以表现出不同的行为。通常通过方法重写和父类引用指向子类对象实现。

3. 方法重载(Overload)和方法重写(Override)的区别是什么?

解析:

方法重载:

发生在同一个类中,方法名相同但参数列表不同。参数不同可以是参数个数、类型或顺序不同。返回值不同不能构成重载。

方法重写:

发生在父类和子类之间。子类重新实现父类的方法。要求方法名和参数列表必须相同,返回值类型相同或其子类,并且访问权限不能缩小。

4. 什么是Java内部类?它有哪些类型?

解析:

内部类是定义在另一个类内部的类。内部类可以访问外部类的成员变量和方法。

常见的内部类类型包括:

1)成员内部类

2)静态内部类

3)局部内部类(定义在方法内部)

4)匿名内部类(没有类名)

内部类常用于增强封装、逻辑分组以及实现回调等场景。

5. Java8有哪些新特性?

解析:

Java8的重要新特性包括:

1)Lambda表达式

2)Stream API

3)函数式接口(Function、Predicate、Consumer等)

4)方法引用(例如 System.out::println)

5)Optional类(减少空指针异常)

6)新的时间日期API(LocalDate、LocalDateTime、LocalTime)