public class Circle extends Object{
private double r; public Circle(Double r) {
this.r = r;
} public Double getR() {
return r;
} public boolean equals(Circle circle) {
return this.r == circle.getR();
}}public class Test {
public static void main(String[] args) {
Object c1 = new Circle(5.0);
Object c2 = new Circle(5.0); System.out.println(c1.equals(c2)); // false }
}为输出的结果是false呀,不是会进行动态绑定,然后去调用Circle的equals(Circle circle)方法吗
private double r; public Circle(Double r) {
this.r = r;
} public Double getR() {
return r;
} public boolean equals(Circle circle) {
return this.r == circle.getR();
}}public class Test {
public static void main(String[] args) {
Object c1 = new Circle(5.0);
Object c2 = new Circle(5.0); System.out.println(c1.equals(c2)); // false }
}为输出的结果是false呀,不是会进行动态绑定,然后去调用Circle的equals(Circle circle)方法吗
你这个是重载,不是重写,所以调用的应该还是Object类的equals方法
把equals重写成
public boolean equals(Object obj) {
Circle c = (Circle) obj;
return this.r == c.getR();
}
你这个是重载,不是重写,所以调用的应该还是Object类的equals方法
我知道这个是重载,但是我想问的是,重载的时候是不会产生动态绑定的吗,运行的时候c1和c2都应该是circle类型啊,望解答!
Circle c2 = new Circle(5.0);
谢谢回答!我现在懂了!