有关Comparable实现的问题

sdvafd 2018-12-24 01:57:32
abstract class GeometricObject1 implements Comparable<GeometricObject1> {
static GeometricObject1 max(GeometricObject1 a,GeometricObject1 b) {
if(a.compareTo(b)>0) return a;
return b;
}
}
class Circle1 extends GeometricObject1 {
private double radius;
public Circle1(double a) {
radius=a;
}
public double getRadius() {
return radius;
}
public int compareTo(GeometricObject1 b) {
if(this.radius-b.getRadius()>=0) return 0;
return 1;
}
}

请教大家 为什么类Circle1实现的方法compareTo中形参不能调用实际所属类的函数?
...全文
114 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdvafd 2018-12-24
  • 打赏
  • 举报
回复
static GeometricObject1 max的形参也是GeometricObject1,为什么其方法体中的a可以调用Circle1中的compareTo?
不止鱼 2018-12-24
  • 打赏
  • 举报
回复
父类指向子类,你d Circle1中形参是GeometricObject1 b,b现在是父类GeometricObject1 ,当然无法调用子类Circle1的方法。 想调用子类的方法,可以让b强转为子类:

public int compareTo(GeometricObject1 b) {
            Circle1 newb = (Circle1)b;
            if(this.radius-newb.getRadius()>=0) return 0;
            return 1;
        }

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧