62,628
社区成员
发帖
与我相关
我的任务
分享
// Point2D的equals
public boolean equals(Point2D p) {
if (p instanceof Point2D) {
return x == p.x && y == p.y;
}
return false;
}
// Point3D的equals
@Override
public boolean equals(Point2D p) {
if (p instanceof Point3D) {
Point3D p3d = (Point3D)p;
return x == p3d.x && y == p3d.y && z == p3d.z;
}
return false;
}
处理思路是这样的:
1. Point2D中只能处理2d的类,2d中不能出现子类3d的任何引用。如果将来出现了4d,5d这么办?是不是还得加判断?
2. Point2D的参数不对,和父类不一样,并不是一个覆写的方法(如果实现了覆写,this实例就一定是这个对象本身,免去的判断和转换的操作,而且具有拓展性),这里需要将参数改成Point2D,另外在方法里面判断p是不是3d,是的话,强转并进行判断。处理思路是这样的: 1. Point2D中只能处理2d的类,2d中不能出现子类3d的任何引用。如果将来出现了4d,5d这么办?是不是还得加判断? 2. Point2D的参数不对,和父类不一样,并不是一个覆写的方法(如果实现了覆写,this实例就一定是这个对象本身,免去的判断和转换的操作,而且具有拓展性),这里需要将参数改成Point2D,另外在方法里面判断p是不是3d,是的话,强转并进行判断。// Point2D的equals public boolean equals(Point2D p) { if (p instanceof Point2D) { return x == p.x && y == p.y; } return false; } // Point3D的equals @Override public boolean equals(Point2D p) { if (p instanceof Point3D) { Point3D p3d = (Point3D)p; return x == p3d.x && y == p3d.y && z == p3d.z; } return false; }
http://blog.csdn.net/u011627980发来贺电

感觉有点头疼,p33.equal(p33)都能出错