5.设计一个抽象的形状类Shape,方法:求周长和求面积。
shape类的子类:Rect(矩形),Circle(圆形)。
Rect类的子类:Square(正方形)。
不同的子类会有不同的计算周长和面积的方法。
(总共五个文件)
这个是题目
public class Shape {
double sum=0;//周长
double area=1;//面积
public double getGirth() {
return 0.0;
}
public double getArea() {
return 0.0;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Rect r=new Rect(3.0,4.0);
Circle c=new Circle(3.0);
Square s=new Square(4.0);
Shape[] shapes=new Shape[3];
shapes[0]=r;
shapes[1]=c;
shapes[2]=s;
for(int i=0;i<shapes.length;i++) {
System.out.println("周长为:"+shapes[i].getGirth()+" "+"面积为:"+shapes[i].getArea());
}
}
}
package homework;
public class Circle extends Shape{
final double a=3.14159265;
double radius;
public Circle(double radius) {
this.radius=radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getGirth() {
sum=2aradius;
return sum;
}
public double getArea() {
area=aradiusradius;
return area;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package homework;
public class Rect extends Shape{
double length;//长
double wide;//宽
public Rect(double length,double wide) {
this.length=length;
this.wide=wide;
}
public Rect() {}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWide() {
return wide;
}
public void setWide(double wide) {
this.wide = wide;
}
public double getGirth() {
sum=2*(this.length+this.wide);
return sum;
}
public double getArea() {
area=this.length*this.wide;
return area;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package homework;
public class Square extends Rect{
public Square(double length) {
this.length=length;
}
public double getGirth() {
sum=4length;
return sum;
}
public double getArea() {
area=lengthlength;
return area;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
抽象的形状类Shape
/**
* 5.设计一个抽象的形状类Shape,方法:求周长和求面积。
* shape类的子类:Rect(矩形),Circle(圆形)。
* Rect类的子类:Square(正方形)。
* 不同的子类会有不同的计算周长和面积的方法。
*/
public abstract class Shape {
/**
* 求面试
*
* @return area
*/
public abstract double getArea();
/**
* 求周长
*
* @return Perimeter
*/
public abstract double getPerimeter();
}
矩形
/**
* 矩形
*/
public class Rect extends Shape {
/**
* 宽
*/
private double width;
/**
* 长度
*/
private double length;
public Rect(double width) {
this.width = width;
}
public Rect(double width, double length) {
this.width = width;
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
@Override
public double getArea() {
return length * width;
}
@Override
public double getPerimeter() {
return 2 * (length + width);
}
}
圆形
/**
* 圆形
*/
public class Circle extends Shape {
/**
* 圆周率
*/
private final double PI = 3.14;
/**
* 半径
*/
private double r;
public Circle(double r) {
this.r = r;
}
public double getPI() {
return PI;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
@Override
public double getArea() {
return PI * r * r;
}
@Override
public double getPerimeter() {
return 2 * PI * r;
}
}
正方形
/**
* 正方形
*/
public class Square extends Rect {
public Square(double width) {
super(width);
}
@Override
public double getArea() {
return getWidth() * getWidth();
}
@Override
public double getPerimeter() {
return 4 * getWidth();
}
}
测试类
public class TestMain {
public static void main(String[] args) {
System.out.println("==============圆==============");
Circle circle = new Circle(3.0);
double circleArea = circle.getArea();
double circlePerimeter = circle.getPerimeter();
System.out.println("圆半径:" + circle.getR());
System.out.println("圆面积:" + circleArea + ", 圆周长:" + circlePerimeter);
System.out.println("==============矩形==============");
Rect rect = new Rect(3, 4);
double rectArea = rect.getArea();
double rectPerimeter = rect.getPerimeter();
System.out.println("矩形长度:" + rect.getLength() + ", 矩形宽度:" + rect.getWidth());
System.out.println("矩形面积:" + rectArea + ", 矩形周长:" + rectPerimeter);
System.out.println("==============正方形==============");
Rect square = new Square(3);
double squareArea = square.getArea();
double squarePerimeter = square.getPerimeter();
System.out.println("正方形边长:" + square.getWidth());
System.out.println("正方形面积:" + squareArea + ", 正方形周长:" + squarePerimeter);
}
}
测试结果: