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

Java 面向对象

51 道题目
我的收藏与复习
题干与完整题解免费阅读第 3 / 6 页

答:普通类声明了抽象方法,就必须声明为 abstract;抽象类则可以一个抽象方法都没有,用来限制直接实例化并提供共享实现。还要把特殊语法分开:枚举可以声明由各个常量类体实现的抽象方法,但不能据此把普通类规则直接套成“所有类型都必须显式写 abstract”。

专注学习

答:常用的两个接口是 Comparable 和 Comparator,分别通过 compareTo 与 compare 定义排序比较。结果小于 0、等于 0、大于 0,分别表示排在前面、按此规则相等、排在后面。比较结果为 0 不一定等同于 equals 为 true,要看具体类型与比较规则的约定。

专注学习

答:Java 标准基本类型包装类的实例是不可变值对象。把 Integer 变量从 1 改为 2,改变的是变量持有的引用,不是把原来的 Integer 对象内部改成 2。不可变也不代表两个相同数值一定指向同一个对象,更不代表使用它们的复合操作自动线程安全。

专注学习

答:创建对象时必须提供的信息、不可缺少的依赖,以及建立有效状态所需的值,适合通过带参构造器传入。构造器可以立即校验,避免对象先处于不可用状态,再等待调用者逐个设置字段。是否还需要无参入口,取决于实际用途和框架要求。

专注学习

答:嵌套类型可以把只服务于某个外部类型的实现放在附近,并控制其可见性。非静态成员内部类带有外围实例语境,能访问该实例的成员;静态嵌套类没有隐含外围实例。局部类、匿名类则适合较局部的实现,但并不意味着它们都具有完全相同的规则。

专注学习

答:不能。构造器不是会被子类继承的普通成员,因此不存在构造器重写。子类声明自己的构造器,可以通过 super 调用父类构造器,也可以在本类中使用不同参数列表重载构造器。这些都与覆盖一个继承的实例方法不同。

专注学习

答:先分清修饰的是接口本身、字段还是方法。顶层接口通常是 public 或包访问;接口中的字段隐含 public static final。普通抽象接口方法隐含 public abstract,另外还可以声明 default、static、private 方法,但这些修饰符不能任意叠加。

专注学习
本页 10 道,共 51 道浏览其他领域