黑马程序员技术交流社区

标题: 怎么把Square和Circle的getArea用进我编写的程序里 [打印本页]

作者: 许瑞航老师    时间: 2012-7-13 17:33
标题: 怎么把Square和Circle的getArea用进我编写的程序里
先说明,我代码有问题,不是偷懒。
这个是我有错误的代码,我不理解的就是怎么把Square和Circle的getArea用进去啊。

interface Shape{
public double getArea();
}
class Square implements Shape{
double sideLen;
Square(double sideLen){
  this.sideLen=sideLen;
}
public double getArea(){
  return sideLen*sideLen;
}
}
class Circle implements Shape{
int radius;
  public double getArea(){
  return Math.PI*radius*radius;
  }
}
public class TestGeneric<Shape>{
Shape shape;
TestGeneric(Shape shape){
  this.shape=shape;
}
public double calcArea(){
  return shape.getArea();
}
public static void main(String[]args){
  Square sq=new Square(3.3);
  TestGeneric<Square> a=new TestGeneric<Square>(sq);
  a.calcArea();
  
}

}
作者: 陆强强    时间: 2012-7-13 17:50
class TestGeneric{
       
        public double calcArea(Shape shape){//这里传入接口变量
                return shape.getArea();//调用面积函数
        }
        public static void main(String[]args){
                Square sq=new Square(3.3);
                TestGeneric a=new TestGeneric();
                System.out.println(a.calcArea(sq));//return 的是double值,用打印语句才能看到效果
          
        }

}
作者: 陆强强    时间: 2012-7-13 17:52
不要把shape放在构造函数里初始化,那样你再求圆的面积又要new一个TestGeneric对象

作者: 许瑞航老师    时间: 2012-7-13 23:35
陆强强 发表于 2012-7-13 17:52
不要把shape放在构造函数里初始化,那样你再求圆的面积又要new一个TestGeneric对象
...

嗯 试过了 您说的果然方便




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2