急求源码啊!谢谢
1. 定义一个形状类, Point, Shape2. 派生出矩形(Rectangle)、圆(Circle)、椭圆(Ellipse)3. 完成其中可能存在的多态方法4. 需要有每种形状的输出,包括中心点、面积、周长的输出
这是我的作业哦。我不理解什么叫多态啊!

解决方案 »

  1.   

    建议你找java图形编程的书来看。
      

  2.   

    多态就是父类引用指向子类对象,运行是根据子类对象的实际类型来调用相应的方法。
    下面就是我简单些的一些代码,楼主可以参考参考。如有不足的地方,希望大家多多指教。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();
    }
    }