java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java构造器能否可以被重写

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

作者: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.如果不能继承一个方法,则不能重写这个方法。

总结

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

您可能感兴趣的文章:
阅读全文