面试官:java的重写和重载有什么区别呢

先来看一段重写的代码吧。

class LaoWang{    public void write() {        System.out.println("老王写了一本《基督山伯爵》");    }}public class XiaoWang extends LaoWang {    @Override    public void write() {        System.out.println("小王写了一本《茶花女》");    }}

重写的两个方法名相同,方法参数的个数也相同;不过一个方法在父类中,另外一个在子类中。就好像父类 LaoWang 有一个 write() 方法(无参),方法体是写一本《基督山伯爵》;子类 XiaoWang 重写了父类的 write() 方法(无参),但方法体是写一本《茶花女》。

来写一段测试代码。

public class OverridingTest {    public static void main(String[] args) {        LaoWang wang = new XiaoWang();        wang.write();    }}

大家猜结果是什么?

小王写了一本《茶花女》

在上面的代码中,们声明了一个类型为 LaoWang 的变量 wang。在编译期间,编译器会检查 LaoWang 类是否包含了 write() 方法,发现 LaoWang 类有,于是编译通过。在运行期间,new 了一个 XiaoWang 对象,并将其赋值给 wang,此时 Java 虚拟机知道 wang 引用的是 XiaoWang 对象,所以调用的是子类 XiaoWang 中的 write() 方法而不是父类 LaoWang 中的 write() 方法,因此输出结果为“小王写了一本《茶花女》”。

再来看一段重载的代码吧。

class LaoWang{    public void read() {        System.out.println("老王读了一本《Web全栈开发进阶之路》");    }    public void read(String bookname) {        System.out.println("老王读了一本《" + bookname + "》");    }}

重载的两个方法名相同,但方法参数的个数不同,另外也不涉及到继承,两个方法在同一个类中。就好像类 LaoWang 有两个方法,名字都是 read(),但一个有参数(书名),另外一个没有(只能读写死的一本书)。

来写一段测试代码。

public class OverloadingTest {    public static void main(String[] args) {        LaoWang wang = new LaoWang();        wang.read();        wang.read("金瓶梅");    }}

这结果就不用猜了。变量 wang 的类型为 LaoWang,wang.read() 调用的是无参的 read() 方法,因此先输出“老王读了一本《Web全栈开发进阶之路》”;wang.read("金瓶梅") 调用的是有参的 read(bookname) 方法,因此后输出“老王读了一本《金瓶梅》”。在编译期间,编译器就知道这两个 read() 方法时不同的,因为它们的方法签名(=方法名称+方法参数)不同。

简单的来总结一下:

1)编译器无法决定调用哪个重写的方法,因为只从变量的类型上是无法做出判断的,要在运行时才能决定;但编译器可以明确地知道该调用哪个重载的方法,因为引用类型是确定的,参数个数决定了该调用哪个方法。

2)多态针对的是重写,而不是重载。

面试官:Java的重写和重载有什么区别?

哎,后悔啊,早年我要是能把这道面试题吃透的话,也不用被老马刁难了。吟一首诗感慨一下人生吧。

青青园中葵,朝露待日晞。阳春布德泽,万物生光辉。常恐秋节至,焜黄华叶衰。百川东到海,何时复西归?少壮不努力,老大徒伤悲

另外,我想要告诉大家的是,重写(Override)和重载(Overload)是 Java 中两个非常重要的概念,新手经常会被它们俩迷惑,因为它们俩的英文名字太像了,中文翻译也只差一个字。难,太难了。

面试官:Java的重写和重载有什么区别?

原创 沉默王二

本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023-11-20 16:14
下一篇 2023-11-21 10:21

相关推荐

  • 教育行业怎么推广

    教育行业该怎么推广?   1、对教育产品精准定位   教育学无止境,活到老学到老。虽然说学习没有年龄界限,但是对教育行业需求较多的还是80后以上的人群,所以在推广教育行业时,除了要…

    职场百科 2023-04-01
  • 公司年会一个人表演什么节目好

    曾在电视上看过一个魔术,发现一点门道,因为取材方便,操作简单,乍看平淡无奇,效果却出人意料,所以,推荐给您,仅供参考。 用手拿着一个水杯,在杯中灌满水,用一张硬质片盖住杯口。然后,…

    2023-05-17
  • 特岗教师工资待遇怎么样

    6-7月份是特岗教师招聘公告集中发布的时间段,前几天教育部办公厅、财政部办公厅也联合印发了《关于做好2022年农村义务教育阶段学校教师特设岗位计划实施工作的通知》,今年计划招聘的中…

    2023-04-25
  • ps各种保存格式区别,ps保存有色差

    大家好!今天我来给大家讲一下如何保存PS作品。在画布上进行了各种操作后,会生成许多图层。如果想要保存这些图层,可以点击“文件”菜单栏中的“存储”或“存储为”选项。这两个选项有什么不…

    2023-08-20
  • 法学专业的学生就业情况,法学专业未来就业去向

    法学其实在择业上有很多选择,你看公务员考试招考公告中,要法学专业的最多,但是都有门槛,一个是要通过法考,一个是要有法律职业资格证。 改革前虽然应届生可以考法考,但是只有一次机会,法…

    2023-08-17
  • 现在加盟奶茶店有建议吗

    谈起开一家奶茶加盟店需要注意哪些关键要点与细节问题,谈到开奶茶店这个话题对于许许多多想通过奶茶店创业的朋友来说,真的就非常重要了。许许多多朋友想奶茶店加盟确又不是很清楚,开一家奶茶…

    2023-07-05
  • spss零基础多久能学好(spss软件哪里有免费版)

    开头,和大家讲个笑话 spss软件在数据处理分析中有较广的运用,适合各类学习群体,就算学习者不会编程,也可以通过spss软件实现数据的处理和模型的建立。以下归纳了spss软件中一些…

    2023-12-04
  • 如何高效管理职场人脉,职场人脉经营术pdf

    很高兴解答。 人脉就是人际关系,不论从事哪一行业,都需要人际关系的开拓、维护和管理,并得到得益于人际关系的支持。 当今社会,单打独斗、仗剑行天下的做法,已经被时代淘汰,而相互帮助、…

    2023-08-14
  • 高情商职场沟通术在线阅读

       在职场生存,非常考验一个人的情商,情商高的人往往比智商高的人更容易立足 ,为什么?   因为情商高意味着会说话,擅长和别人打交道,处理人际关系。久而久之,办公室里大家都知道你…

    2023-02-18
  • 工作疲倦了怎么办

    之前我也遇到过这样的问题,说说我的想法和我使用的一些方法吧: 原理: 倦怠,缺乏热情是因为不能从当下的工作或者生活中获得成就感,感觉花费了很多的时间和精力,最后没有得到有效且正向的…

    2023-01-26