Java构造器(构造方法)能否可以被重写

 更新时间:2024年03月26日 08:59:25   作者:pangpd  
这篇文章主要介绍了Java构造器(构造方法)能否可以被重写问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. 前言

首先,构造器是不能被继承的,因为每个类的类名都不相同,而构造器名称与类名相同,所以根本谈不上继承。

又由于构造器不能继承,所以就不能被重写。

但是,在同一个类中,构造器是可以被重载的。

其实,在之前的一篇博客中,我已经记录了重载和重写的区别

这里我们再重复一下。

2. 方法重载(Overloading)

重载遵循 两同一不同

(1)方法在同一个类中;

(2)方法的名字相同;

(3)参数不同(个数、类型、顺序至少有一个不一样);

(4)返回类型可以相同也可以不同。

因此,每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

3. 方法的重写(Override)

重写发生在继承关系中,当一个子类继承一父类,父类的某一个方法不再满足子类的具体特征,此时需要重新定义子类中定义的该方法。

需要满足一下条件

1.参数列表(方法的名称,参数个数、类型)必须完全与被重写方法的相同;

2.返回类型必须完全与被重写方法的返回类型相同;

3.子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访问权限;(不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。)

4.父类的成员方法只能被它的子类重写。

5.声明为final的方法不能被重写。

6.声明为static的方法不能被重写,但是能够被再次声明。

7.子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。

8.子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。

9.重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

10.构造方法不能被重写。

11.如果不能继承一个方法,则不能重写这个方法。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java实现读取txt文件中的内容

    java实现读取txt文件中的内容

    本文通过一个具体的例子向大家展示了如何使用java实现读取TXT文件里的内容的方法以及思路,有需要的小伙伴可以参考下
    2016-03-03
  • SpringBoot中如何进行统一异常处理

    SpringBoot中如何进行统一异常处理

    大家好,本篇文章主要讲的是SpringBoot中如何进行统一异常处理,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • 使用Spring Cache和Redis实现查询数据缓存

    使用Spring Cache和Redis实现查询数据缓存

    在现代应用程序中,查询缓存的使用已经变得越来越普遍,它不仅能够显著提高系统的性能,还能提升用户体验,在这篇文章中,我们将探讨缓存的基本概念、重要性以及如何使用Spring Cache和Redis实现查询数据缓存,需要的朋友可以参考下
    2024-07-07
  • Spring Cloud LoadBalancer 负载均衡详解

    Spring Cloud LoadBalancer 负载均衡详解

    本文介绍了如何在Spring Cloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和随机策略的配置方法,此外,还提供了部署到云服务器并在多个实例之间进行负载均衡的步骤,感兴趣的朋友一起看看吧
    2025-02-02
  • Java日常练习题,每天进步一点点(6)

    Java日常练习题,每天进步一点点(6)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • MyBatis-Flex BaseMapper的接口基本用法小结

    MyBatis-Flex BaseMapper的接口基本用法小结

    本文主要介绍了MyBatis-Flex BaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • springboot 如何使用jackson来处理实体类

    springboot 如何使用jackson来处理实体类

    这篇文章主要介绍了springboot使用jackson来处理实体类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • springboot动态切换数据库表方式

    springboot动态切换数据库表方式

    本文分享了使用TableScopeAspectAjk切面和TableScopeAjk注解实现数据库表配置、业务切入点管理及SQL动态配置的经验,旨在提升代码可维护性与灵活性,适用于业务逻辑与数据层的分离开发
    2025-08-08
  • MyBatis插件实现SQL执行耗时监控

    MyBatis插件实现SQL执行耗时监控

    MyBatis插件(Plugin)是其框架扩展性的核心,本文深入剖析插件实现原理,手把手教你开发企业级SQL监控插件,有需要的小伙伴可以了解下
    2025-12-12
  • SpringBoot文件上传控制及Java 获取和判断文件头信息

    SpringBoot文件上传控制及Java 获取和判断文件头信息

    这篇文章主要介绍了SpringBoot文件上传控制的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-12-12

最新评论