栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面试题精讲系列12之Java中父类的构造方法能不能重写?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试题精讲系列12之Java中父类的构造方法能不能重写?

[TOC]

一. 面试题及剖析

1. 今日面试题

在上一篇文章中,壹哥 带各位详细的讲解了方法重载与重写的各自特点及区别,但是我们去面试的时候,面试官有时候并不会直接问我们”说说方法重载与重写的区别“,而是会间接的拐弯来问我们,比如:

Java中父类的构造方法能不能被重写?

2. 题目剖析

其实上面这个题目,考察的还是我们对方法重写的掌握情况,只要我们把上一篇文章的内容熟悉的记下来,这个问题就可以得出很明确的答案。

二. 参考答案

1. 方法重写特点

为了方便各位查阅,壹哥 再次把方法重写的特点总结一下。

  1. 方法重写发生在父类与子类之间,即父类的成员方法只能被它的子类重写;
  2. 方法重写时,方法名、参数列表必须与被重写方法完全相同;
  3. 返回值类型与被重写方法的返回值类型可以不同,但是必须是父类返回值的派生类(Java5 及更早版本要求返回值类型相同,Java7 及更高版本可以不同);
  4. 子类方法的访问修饰符一定要大于等于被重写方法的访问修饰符(public>protected>default>private);
  5. 重写的方法能够抛出任何非强制性异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明更广泛的强制性异常,反之则可以;
  6. 构造方法不能被重写;
  7. 声明为 final 的方法不能被重写,即如果不能继承一个方法,则不能重写这个方法;
  8. 声明为 static 的方法不能被重写,但是能够被再次声明;
  9. 子类和父类如果在同一个包中,那么子类可以重写父类中的所有方法,除了声明为 private 和 final 的方法;
  10. 子类和父类如果不在同一个包中,那么子类只能够重写父类中声明为 public 和 protected 的非 final 方法;

2. 面试题答案

在上面小节的第6条里面,壹哥 明确告诉了各位,构造方法不能被重新!所以本题目的答案就出来了,Java中父类的构造方法不能被重写!

但是有的小伙伴可能会质疑,难道 壹哥 你说的就对吗?对与不对,我们做个试验看看吧。

3. 代码案例

首先我们创建一个父类Father,并创建对应的一个构造方法。

//父类
public class Father {
    
    public Father(){
        System.out.println("father...");
    }

    public void writeCode() {
        System.out.println("码爹: 做个开心的码农一世... 撸Java...");
    }

}

然后再创建一个子类Son,类内部的方法定义如下:

public class Son extends Father {
    
    public Father(){
        System.out.println("father...son...");
    }
    
    public Son(){
        System.out.println("son...");
    }

    @Override
    public void writeCode() {
        System.out.println("码崽: 做个开心的码农二世... 撸Java/AI...");
    }

}

这时候我们截图看一下,会发现Son类内部的Father()方法直接在编译阶段就报错了。

所以Java中父类的构造方法是不能被重写的!这是因为构造方法不能被继承,子类中不能定义一个无void无返回值的方法,会出现编译错误。但是我们要注意,构造方法不能被重写但可以被重载,并且子类的构造器中可以通过super关键字调用父类的构造方法(默认自动调用无参构造)!

三. 结论

至此,壹哥 在本文中再次带大家复习了方法重写的知识点,希望大家牢牢记住。对于方法重写,你还有哪些疑问呢?请在评论区留言吧。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号