急求源码啊!谢谢
1. 定义一个形状类, Point, Shape2. 派生出矩形(Rectangle)、圆(Circle)、椭圆(Ellipse)3. 完成其中可能存在的多态方法4. 需要有每种形状的输出,包括中心点、面积、周长的输出
这是我的作业哦。我不理解什么叫多态啊!
1. 定义一个形状类, Point, Shape2. 派生出矩形(Rectangle)、圆(Circle)、椭圆(Ellipse)3. 完成其中可能存在的多态方法4. 需要有每种形状的输出,包括中心点、面积、周长的输出
这是我的作业哦。我不理解什么叫多态啊!
下面就是我简单些的一些代码,楼主可以参考参考。如有不足的地方,希望大家多多指教。public class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public Point() {
this(0,0);
} public double getX() {
return x;
} public void setX(double x) {
this.x = x;
} public double getY() {
return y;
} public void setY(double y) {
this.y = y;
} @Override
public String toString() {
return "坐标是:(" + x +"," + y +")";
}
}
public abstract class Shape {
public abstract void printCenterPoint();//打印中心点
public abstract void printArea();//打印面积
public abstract void printPerimeter();//打印周长
//该方法统一打印出Shape的相关信息
public void print() {
printCenterPoint();
printArea();
printPerimeter();
}
}public class Rectangle extends Shape { private Point point;// 矩形左上角的点,用来定位
private double width;// 矩形的宽度
private double height;// 矩形的高度 public Rectangle(Point point, double width, double height) {
this.point = point;
this.width = width;
this.height = height;
} public Rectangle() {
this(new Point(0, 0), 800, 600);// 默认左上角的位置为(0,0),宽度为800,高度为600
} public Point getPoint() {
return point;
} public void setPoint(Point point) {
this.point = point;
} public double getWidth() {
return width;
} public void setWidth(double width) {
this.width = width;
} public double getHeight() {
return height;
} public void setHeight(double height) {
this.height = height;
} public void printArea() {
System.out.println("矩形的面积是:" + width * height);
} public void printCenterPoint() {
double x = point.getX() + width / 2;
double y = point.getY() + height / 2;
System.out.println("矩形的中心点" + new Point(x,y));
} public void printPerimeter() {
System.out.println("矩形的周长是:" + 2 * (width + height));
} public void print() {
System.out.println("矩形的相关信息");
super.print();
System.out.println();
}
}
public class Circle extends Shape {
private static double pi = 3.14;
private Point point;//圆的中心
private double radius;
public Circle(Point point, double radius) {
this.point = point;
this.radius = radius;
}
public Circle() {
this(new Point(), 15);//默认圆的中心坐标为(0,0),半径为15
}
public Point getPoint() {
return point;
} public void setPoint(Point point) {
this.point = point;
} public double getRadius() {
return radius;
} public void setRadius(double radius) {
this.radius = radius;
} public void printArea() {
double area = pi * radius * radius;
System.out.println("圆的面积为:" + area);
} public void printCenterPoint() {
System.out.println("圆的中心点" + point);
} public void printPerimeter() {
double perimeter = 2 * pi * radius;
System.out.println("圆的周长是:" + perimeter);
} public void print() {
System.out.println("圆的相关信息");
super.print();
System.out.println();
}
}
public class Ellipse extends Shape {
private static double pi = 3.14;
private Point point;//左上角的点,相当于和该椭圆外切的矩形的左上角的点。
private double a;//长半轴的长
private double b;//短半轴的长
public Ellipse(Point point, double a, double b) {
this.point = point;
this.a = a;
this.b = b;
}
public Ellipse() {
this(new Point(), 8, 6);//默认的左上角位置为(0,0),长半轴长为8,短半轴长为6
}
public Point getPoint() {
return point;
} public void setPoint(Point point) {
this.point = point;
} public double getA() {
return a;
} public void setA(double a) {
this.a = a;
} public double getB() {
return b;
} public void setB(double b) {
this.b = b;
} public void printArea() {
//S=π(圆周率)×a×b(其中a,b分别是椭圆的长半轴,短半轴的长).
double area = pi * a * b;
System.out.println("椭圆的面积为:" + area);
} public void printCenterPoint() {
double x = point.getX() + a;
double y = point.getY() + b;
System.out.println("椭圆的中心" + new Point(x,y));
} public void printPerimeter() {
//椭圆的周长公式很多,这里采用比较简单的一个:L1=πQN/arctgN(b→a、Q=a+b、N=((a-b)/a)^2、)
double q = a + b;
double n = Math.pow(((a - b) / a), 2);
double perimeter = pi * q * n / Math.atan(n);
System.out.println("椭圆的周长为:" + perimeter);
} public void print() {
System.out.println("椭圆的相关信息");
super.print();
System.out.println();
}
}
public class Test {
public static void main(String[] args) {
Shape shape = new Rectangle();
shape.print();
shape = new Circle();
shape.print();
shape = new Ellipse();
shape.print();
}
}