面试官: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、收集就业信息   就业信息收集到后,毕业生就应该对它们进行分类、分析。搞清楚哪些是国家的规定,哪是省市的规定,哪些是所在高校的规定,哪些是就业…

    职场百科 2023-11-04
  • 怎么做京东店铺主页面图

    做电商的小伙伴们应该都知道,用精美的主图来装饰自己店铺,不但可以吸引访客眼球,同时也是提升京东店铺的点击率和转化率的一个小妙招,零美工基础的小伙伴如果想自制属于自己的京东店铺主图的…

    2023-08-23
  • 如何让自己的工作能力变强,怎么让工作能力变强

    很多职场新人,听到提升工作能力的第一反应就是不断加强专业知识学习,这样想的人学生思维比较重,没有完全适应从学校到职场身份的变化。那么,除了增强专业知识学习,还有哪些是职场人士应该做…

    2023-02-02
  • 招聘优势怎么写,招聘工作优势怎么写

    优势就是你比别人强的地方。招聘优势就是找到一个应聘者选择你公司的理由。 首先你要分析应聘者喜欢在什么样的环境中工作:无非上下班时间自由、同事友好,领导器重、硬件环境好,公司提供工作…

    2023-01-02
  • 对下属如何进行恰当的批评,如何在恰当的时候批评员工

    句俗话水至清则无鱼。管理下属更应当是一种学问智慧,恰当的批评教育自己的下属确实是一门很深的学问。 不论哪个行业,哪个单位作为主管从广义上来讲就是一个“官”,“官”就是要让底下的人给…

    职场百科 2023-05-18
  • 早上起来上班太困怎么提神,上班非常困了怎么提神

    早上上班后特别困,该怎么提神? 悬梁刺股,老板看见了肯定特别感动。 好好好,正经点,直接进入正题。 如果你睡眠时间充足,还老觉得容易犯困的话,可能是湿气重、气虚,这类人经常是能坐着…

    2023-04-09
  • 在家没事做如何挣钱(在家做什么可以挣钱)

    如果想要收入日过千,有什么好的建议 如果你想要日收入过千,要么,你有足够的运气和机遇让你找到一个商机,如果没有,那么就要踏踏实实的过一个“平常人”该过的生活。什么是“平常人”该过的…

    职场百科 2023-06-20
  • 你有什么自己总结出来的人生经验吗

    1.当一个人选择成长的时候,往往也是选择不被人理解,因为你要走你选的路,不是他们认为你该选的路。 2.面对变化,接受无常,放过自己。 3.也许,现在所有的不快乐,都将是将来我快乐的…

    职场百科 2022-12-19
  • 高德地图上顺风车怎么注册入驻

    你好,这里我来告诉你如何在高德地图内注册顺风车。首先下载高德地图,并且在高德地图内完成注册,至于怎么注册,你可以点击左上角头像,根据提示一步一步走就可以了。不过,需要注意的是一定要…

    2023-05-26
  • 淘宝刷单骗局的骗术

    所谓兼职却是淘宝刷单  在合肥上班的小张有空余时间,想挣点零花钱,他在新浪微博上发现了一个兼职,对方声称可以利用业余时间轻松挣钱,加了上面的qq号码,小张联系上一个叫“客服雪莉”的…

    职场百科 2023-07-09