小白求解一道关于继承中对象的问题!

TMAC狂热 2014-05-05 02:11:55
package package1;

public class TestGeometricObject {
public static void main(String[] args){
GemotricObject1 g1 = new Circle4(5);
GemotricObject1 g2 = new Rectangle1(5,3);

System.out.println(" The two objects have the same area ? "+
equalArea(g1, g2));//此处显示错误
}
public static boolean equalArea(Circle4 g1, Rectangle1 g2){

return g1.getArea() == g2.getArea();
}
}
我在Circle4和Rectangle1类中分别定义了getArea()方法
Circle4和Rectangle1类是 GemotricObject1 的子类,
问 GemotricObject1 g1 = new Circle4(5);
GemotricObject1 g2 = new Rectangle1(5,3);
后,为什么equalArea(g1,g2)不行???
...全文
177 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
安静听歌 2014-05-05
  • 打赏
  • 举报
回复
你实例出来的g1跟g2是 GemotricObject1类,但是equalArea(Circle4 g1, Rectangle1 g2),需要的类是GemotricObject1的子类:Circle4 、Rectangle1
安静听歌 2014-05-05
  • 打赏
  • 举报
回复
额,楼上说对了。多态的问题
nidynie 2014-05-05
  • 打赏
  • 举报
回复
方法中的参数是子类的,用父类的类型直接传入肯定有问题,类型不同。解决办法更改getArea 方法为传入两个 父类类型,或者调用这个方法前把父类类型转换成子类类型。好好看看多态的知识。
linhua11 2014-05-05
  • 打赏
  • 举报
回复
请给出完整代码,getArea()方法的具体实现是什么,然后equalArea(g1,g2)不行具体是指啥?有没有出错信息?
-江沐风- 2014-05-05
  • 打赏
  • 举报
回复
equalArea(Circle4 g1, Rectangle1 g2) 这里向下类型转换错误,
neusimon 2014-05-05
  • 打赏
  • 举报
回复

System.out.println(" The two objects have the same area ? "+
    	 equalArea((Circle4)g1,(Rectangle1)g2));//此处显示错误


62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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