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.如果不能继承一个方法,则不能重写这个方法。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
springboot项目拦截前端请求中的特殊字符串(解决方案)
springboot项目中,需要对前端请求数据进行过滤,拦截特殊字符,本文通过实例代码给大家分享完美解决方案,感兴趣的朋友一起看看吧2023-10-10
mybatis模糊查询之bind标签和concat函数用法详解
大家都知道bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中,接下来通过本文给大家介绍了mybatis模糊查询——bind标签和concat函数用法,需要的朋友可以参考下2022-08-08
SpringSecurityOAuth2 如何自定义token信息
这篇文章主要介绍了SpringSecurityOAuth2 自定义token信息的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06


最新评论