【Java核心面试宝典】Day8、面向对象常见面试题汇总(三)

举报
灰小猿 发表于 2021/08/06 07:46:22 2021/08/06
【摘要】 Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!用坚持缔造技术、用指尖敲动未来!和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣!在此专栏《Java核心面试宝典》记录我们备战梦想的【day 8】!面向对象作为我们在Java编程的核心思想,在面试上的考察点还是非常的多的,之前已...

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和“==”的区别等。

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

我是==灰小猿==,我们下期见!
请添加图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。