什么叫方法签名 Java

方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。
注意,方法签名不包括方法的返回类型。不包括返回值和访问修饰符。
常见的问题应用:重载和重写。

public class A{
	 protected int method (int a, int b) {
		 return 0;
	 }
 }
class B extends A{
	private int method(int a,long b){
		return 0;
	}
}


重写要求:
前提是继承,两个方法的方法签名相同。至于修饰符,范围相同或者比父类的范围大即可。
所以 B的method方法根本不是重写的A 的method方法,而是重载。重载要求方法名相同,参数和返回值随便改。

所以,参数不一定改成long,随便什么都是重载。

要是重写的话,也不是必须加@override,写@override,这个表示编辑器会给你去父类检查重写的对不对,不写就自己检查呗。

重写是覆盖,就是子类的替换了父类的,正常用方法,调的是子类的,所以重写完还是一个方法
重载是写多个同名方法,但可以给的参数不同,功能类似,所以正常调哪个方法,要看参数怎么写的,跟继承无关,区别是重载后变成多个方法。

虽然简单,但是我确实不知道有方法签名这一说,现在既然知道了,就简单的做个笔记咯。还望众喷子们冷静的路过。


关于重写和重载,学过Java的都可以说几句,但是说的到底对不对,那还真不好说,最好的办法就是亲自测试一下,用代码说话。

下面是我关于重写的测试,@override,使用这个注解,编辑器会自动帮你检查你的重写是不是OK的。

我做如下测试:

1.关于修饰符的测试

父类:如果是private,那么子类就不存在重写,只是新建了个方法。

但是要是protected的话,子类就可以重写。@override是可以OK的。子类是protected或者public。经测试private类型是错误的。直接报错。

验证上面的修饰符范围相同或者比父类大即可。

这也间接说明,继承的关系,private是不能被继承的,所以父类private类型的属性是不能到子类去的,也就无从扩展,也就谈不上重写啦。

2.关于返回类型的测试

在修饰符条件OK的情况下,来修改返回类型,

发现如果可继承的要重写的方法要是返回类型不同,编辑器也是会报错的。说是重写的两个方法的返回类型冲突。不相容的,矛盾的返回类型。

验证,重写的方法的返回类型的关系。

不信的可以自己测试下。




©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页