关于Java中重载的若干问题

本文通过代码实例解释了在Java中,子类如何通过重载与重写方法来扩展父类功能,着重对比了二者在实现上的关键差异,包括参数类型、数量和顺序的不同对方法行为的影响。

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

一.问题引入

  今天看视频时偶然间看到了,说父类和子类间也可以重载,貌似和以前的观念有些冲突,就验证了下……

二.问题解决

  看如下代码:

public class Son extends Father {

	public void test(int i) {
		System.out.println("我是子类里的有参数test方法:"+i);
	}
	
	public static void main(String[] args) {
		Son son = new Son();
		son.test();
		son.test(3);
	}

}

class Father {
	void test() {
		System.out.println("我是父类里的无参数test方法");
	}
	
}

 三.结论

  a.在一个类里,方法名相同,参数不同是方法的重载,方法重写必须满足下列条件:
    (1) 子类的方法的名称及参数必须和所覆盖的方法相同
    (2) 子类的方法返回类型必须和所覆盖的方法相同
    (3) 子类方法不能缩小所覆盖方法的访问权限
    (4) 子类方法不能抛出比所覆盖方法更多的异常

  b.子类与父类间存在重载吗?  

    在子类中扩展一个与父类同名不同参数的方法不叫重写,应该叫叫重载;不过也有人不同意,认为这样写能表达出所谓“重载”的意思,但是按照重载概念(重载是在同一个类中多态性的表现),似乎不符合。 可以更深层的理解为,子类只是拥有了父类的这个方法(功能),而不是自己创建的功能。

  c.

    参数顺序不同但是参数类型顺序相同的话,不构成重载;参数顺序不同 且 参数类型顺序不同的话,也构成重载。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值