方法重写与方法重载的区别

方法重写(override):即方法覆盖。指的是父子类中方法的关系。父类A中有方法method1,在子类中想要使用method1这个方法签名而又要实现与父类method1方法不同的功能,这个时候就要用到方法重写。即子类使用父类的方法签名,但子类方法体与父类不同,实现的功能不同。

例子:

public class A {

	public void method1(){
		System.out.println("method1");
	}
}
public class SubA extends A{

	@Override
	public void method1() {
		// TODO Auto-generated method stub
		System.out.println("method1 in SubA");
	}

}

在A的子类SubA中重写了A的method1方法,而两个method1中输出的语句不同。


方法重载(overload):同一个类中方法之间的关系。这里要弄清楚如何区别是两个方法签名是否同一个方法的签名。方法签名的区分规则:方法签名的区分是以方法的参数类型、排序与个数为标准的。如果两个方法签名有相同的参数类型、参数排序和参数个数,那么这两个方法使用的同一个签名。在同一个类中两个方法使用同一个方法签名会报错。而方法重载就是两个方法使用了相同的方法名而方法的参数不一致。

举例:

public class A {

	public void method1(){
		System.out.println("method1");
	}
	public void  method1(int i){
		System.out.println("method1 too");
	}
	
}



方法签名是否与方法的返回值有关呢?

在eclipse做了一个例子:


报错如下:

Duplicate method method1(int) in type A
错误的原因是多个方法method1被定义在类A中,也就数说方法的签名是与方法的返回值无关的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值