方法重写在子类中输错了签名会怎样?

package demo;


public class Main {
	public static void main(String[] args) {
		Object circle1 = new Circle();
		Object circle2 = new Circle();
		System.out.println(circle1.equals(circle2));
	}
}
class Circle{
	double radius;
	public boolean equals(Circle circle) {
		return this.radius == circle.radius;
	}
}

输出为false,就算输错了也可以当做方法重载啊,我用debug来看,根本就没有进入equals怎么回事?

超凶的233
浏览 1344回答 3
3回答

xixiyingyi

hi,Java里面object的equals方法参数是(object obj)哦,你重写的equals(xxxx),参数和父类object不一样呢,所以其实你并没有重写equals方法,你只是在自定义类里面新增了一个看似很像重写object的equals方法的方法。你在main方法里面调用的是object的equals方法,当然不会进去你自定义的'equals'方法里面了。这样说你懂了吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java