图形(Shape)接口和它的实现类:长方形(Rectangle) 、正方形(Square)和圆形(Circle)
要求:
(1)每一种图形都求它的周长doublelength()。
(2)在长方形类中定义长length、宽width两个属性;在正方形类中定义边长x;在圆形类中定义半属性径r。
(3)在长方形类中定义带有两个参数的构造方法用于给长和宽赋值;在正方形类中定义带有一个参数的构造方法用于给边长赋值;在圆形类中定义一个带有一个参数的构造方法用于给半径赋值。
(4)在测试类中定义一个方法shapeLength可以接收任意类型的图形对象,在方法内部调用图形周长方法。
(5)在测试类中调用shapeLength方法求长方形、正方形、圆形的周长。
(6)在主方法中定义匿名内部类作为参数传递给shapeLength方法,计算边长为5的正六边形周长。
interface Shape//图形类
{
double length();
}
class Rectangle implements Shape//定义长方形类实现Shape接口
{
double length;//定义长方形的长和宽
double width;
public Rectangle(){}
public Rectangle(double length,double width){//定义构造方法
this.length=length;
this.width=width;
}
public double length(){//重写length()函数
double x=(length+width)*2;
System.out.println("长方形的周长为"+x);
return x;
}
}
class Square implements Shape//定义正方形类实现Shape接口
{
double x;//定义正方形的边长
public Square(){}
public Square(double x){//定义构造方法
this.x=x;
}
public double length(){//重写length()函数
System.out.println("正方形的周长为"+4*x);
return 4*x;
}
}
class Circle implements Shape//定义圆形类实现Shape接口
{
double r;
public Circle(){}
public Circle(double r){//定义构造方法
this.r=r;
}
public double length(){//重写length()函数
double x=2*Math.PI*r;
System.out.println("圆形的周长为"+x);
return x;
}
}
class Test01
{
public static void main(String[] args)
{
Shape rectangle = new Rectangle(4,3);//创建长方形对象
Shape square = new Square(4);//创建正方形对象
Shape circle = new Circle(4);//创建圆形对象
shapeLength(rectangle);//调用静态方法
shapeLength(square);//调用静态方法
shapeLength(circle);//调用静态方法
shapeLength(new Shape(){//匿名内部类
double l=5;
public double length(){
System.out.println("六边形的周长为"+6*l);
return 6*l;
}
});
}
public static void shapeLength(Shape s){//定义shapeLength()方法
s.length(); //调用length()方法
}
}



