Java核心面试宝典Day8面向对象常见面试题汇总

Posted 灰小猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java核心面试宝典Day8面向对象常见面试题汇总相关的知识,希望对你有一定的参考价值。

Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!
用坚持缔造技术、用指尖敲动未来!
和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣
在此专栏《Java核心面试宝典》记录我们备战梦想的【day 8】

面向对象作为我们在Java编程的核心思想,在面试上的考察点还是非常的多的,之前已经和小伙伴们总结了两篇有关面向对象的面试题了,今天继续~~~

1、在继承关系中,子类是不是父类的子集?

子类不是父类的子集,子类包含父类所有的类成员,同时还有自己特有的成员变量,所以子类通常包含比父类更多的类成员。

2、定义继承关系时,父类和子类之间应存在什么关系?

父类与子类之间应存在is-a的关系

3、super关键字的作用是什么?

关键字 super 指向当前类的的父类。关键字 super 可以用于两种途径,一是调用父类的构造方法,二是调用父类的方法。

调用父类的构造方法,使用 super()super(参数),该语句必须是子类构造方法的第一个语句,且这是调用父类构造方法的唯一方式。

调用父类的方法,使用 super.方法名(参数)

4、有继承关系时,构造方法的调用顺序是怎样的?

构造一个类的实例时,会沿着继承链调用所有父类的构造方法,父类的构造方法在子类的构造方法之前调用,即构造方法的调用顺序是从父类到子类的。
如下面的实例:

public class Class3 extends Class2 {
    public static void main(String[] args) {
        new Class3();
    }

    public Class3() {
        System.out.println("D");
    }
}

class Class2 extends Class1 {
    public Class2() {
        this("B");
        System.out.println("C");
    }

    public Class2(String s) {
        System.out.println(s);
    }
}

class Class1 {
    public Class1() {
        System.out.println("A");
    }
}


解释一下上面的程序:由于 Class2 是 Class1 的子类,Class3 是 Class2 的子类,因此在 Class3 的构造方法中的所有语句运行之前,先调用 Class2 的无参数构造方法。Class2 的无参数构造方法调用了有参数构造方法,在 Class2 的有参数构造方法中的所有语句运行之前,先调用 Class1 的无参数构造方法。因此,运行上述代码得到的输出结果是:
A
B
C
D

5、重写中,子类的方法返回值类型是否可以与父类的不完全一致?

如果返回值类型是基本数据类型或void,则必须保持一致,如果父类的返回值是引用数据类型,则子类的返回值类型必须与父类一致或者是父类返回值类型的子类。

6、重写和重载的区别是什么?

重载是指一个类中定义多个方法,这些方法有相同的名称,但是方法的签名不同;
重写是指在子类中定义一个方法,该方法与父类中的该方法的签名相同,返回值类型相同或者子类返回值是父类方法返回值的子类。

重载重写
场合同一个类父类和子类
方法名称相同相同
方法签名不同相同
返回值类型可以不同相同或者子类返回值类型是父类返回值类型的子类

7、可见性修饰符protected表示可以从哪里访问类成员?

可见性修饰符 protected 表示类成员可以在同一个包里的任何类中访问,也可以在继承了该类的子类中访问。

8、关键字final用于修饰类和方法时,其含义是什么?

使用final修饰的类是终极类,不能被继承。使用final修饰的方法不能被子类重写。

9、什么是native方法?

关键字native表示实现方法的编程语言不是Java

10、判断两个对象内容是否相等时,是否可以使用“== ”?应该使用什么方法?

判断两个对象内容是否相等应该使用equals方法,而不能使用“ == ”,“==”的作用是判断两个对象是否具有相同的引用

11、重写equals方法有什么要求?

根据散列约定,如果两个对象相同,他们的散列码一定相同,因此如果重写了equals方法,必须重写hashCode方法,以保证两个相等的对象对应的散列码是相同的。

12、说一说Object类中的finalize方法?

protected void finalize() throws Throwable

finalize方法用于垃圾回收,如果一个对象不能再被访问,就变成了垃圾,finalize 方法会被该对象的垃圾回收程序调用。该方法的默认实现不做任何事,如果必要,子类应该重写该方法。
该方法可能抛出 Throwable 异常。所以轻易不要重写finalize()方法,否则会导致垃圾回收出现问题,从而产生内存泄露问题

今日总结

今天和大家分享有关继承和Object类的一些常见面试题,我们需要掌握继承中的调用顺序方法重写和重载的区别equals和“==”的区别等。

面向对象的面试题比较多,之后还会继续总结,如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内`, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!

我是灰小猿,我们下期见!

以上是关于Java核心面试宝典Day8面向对象常见面试题汇总的主要内容,如果未能解决你的问题,请参考以下文章

Java核心面试宝典Day10面向对象常见面试题汇总

Java核心面试宝典Day10面向对象常见面试题汇总

Java核心面试宝典Day6面向对象常见面试题汇总

Java核心面试宝典Day7面向对象常见面试题汇总

Java核心面试宝典Day9面向对象常见面试题汇总

Java核心面试宝典Day7面向对象常见面试题汇总