【Java】构造器(构造方法)是否可以被重写?

本文详细解析了构造器的特点及其不可被继承与重写的原因,并深入对比了方法重载与重写的概念及具体规则。通过本文,读者可以清晰地了解两者之间的区别及其在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值