前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java核心面试宝典】Day8、面向对象常见面试题汇总(三)

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

作者头像
灰小猿
发布2021-09-23 15:18:13
3730
发布2021-09-23 15:18:13
举报
文章被收录于专栏:灰小猿技术社区

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

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

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

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

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

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

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

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

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

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

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

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

代码语言:javascript
复制
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和“==”的区别等。

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、在继承关系中,子类是不是父类的子集?
  • 2、定义继承关系时,父类和子类之间应存在什么关系?
  • 3、super关键字的作用是什么?
  • 4、有继承关系时,构造方法的调用顺序是怎样的?
  • 5、重写中,子类的方法返回值类型是否可以与父类的不完全一致?
  • 6、重写和重载的区别是什么?
  • 7、可见性修饰符protected表示可以从哪里访问类成员?
  • 8、关键字final用于修饰类和方法时,其含义是什么?
  • 9、什么是native方法?
  • 10、判断两个对象内容是否相等时,是否可以使用“== ”?应该使用什么方法?
  • 11、重写equals方法有什么要求?
  • 12、说一说Object类中的finalize方法?
  • 今日总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档