《JAVA》定义一个抽象类Shpae表示形状,给定颜色属性String color,提供一个不带参数的构造方法和一个带参数的构造方法

问题:定义一个抽象类Shpae表示形状,给定颜色属性String color,提供一个不带参数的构造方法和一个带参数的构造方法,完成对属性的赋值,提供一个计算面积的抽象方法area()。定义一个类Circle表示圆形,继承于Shape,给定专有属性半径double r,提供两个构造方法。定义一个类Rectangle表示矩形,继承于Shpae,给定专有属性长length、宽width ,提供两个构造方法。定义一个测试类TestShape,完成圆、矩形对象的创建和面积的计算。

  •  

    3-1

    /*1.定义一个抽象类Shpae表示形状,给定颜色属性String color,
     * 提供一个不带参数的构造方法和一个带参数的构造方法,完成对属性的赋值,
     * 提供一个计算面积的抽象方法area()。定义一个类Circle表示圆形,
     * 继承于Shape,给定专有属性半径double r,提供两个构造方法。
     * 定义一个类Rectangle表示矩形,继承于Shpae,给定专有属性长length、宽width ,
     * 提供两个构造方法。定义一个测试类TestShape,完成圆、矩形对象的创建和面积的计算。*/
    package zy;
    /**
     * @author  */
    public class TestShape {
     public static void drawShape(MakeShape s){
         s.draw();
        }
    public static void main(String[] args) {
    MakeShape s=new Circle();
    TestShape.drawShape(s);
    TestShape.drawShape(new Rectangle());
    }
    }

    package suanfa;

    import java.awt.geom.RectangularShape;

    import java.util.Scanner;

    /**

     * 1.定义一个抽象类Shpae表示形状,给定颜色属性String color

     * ,提供一个不带参数的构造方法和一个带参数的构造方法,完成对属性的赋值,

     * 提供一个计算面积的抽象方法area()。定义一个类Circle表示圆形,

     * 继承于Shape,给定专有属性半径double r,提供两个构造方法。

     * 定义一个类Rectangle表示矩形,继承于Shpae,

     * 给定专有属性长length、宽width ,提供两个构造方法

     * 。定义一个测试类TestShape,完成圆、矩形对象的创建和面积的计算。

     *

     */

    abstract class Shape{

    protected String color;

    //不带参数的构造函数

    public Shape() {

    super();

    }

    //带参数的构造函数

    public Shape(String color) {

    super();

    this.color = color;

    }

    //计算面积的抽象方法

    public abstract double area();

    //定义一个圆,继承于形状

    class Circle extends Shape{

    //专有属性半径

    private double r;

    //提供两个构造方法。

            public Circle(double r) {

    super();

    this.r = r;

    }

    public Circle() {

    r=1.0;

    }

    public  double area(){

    return 3.14*r*r;

    }

    //定义一个类Rectangle表示矩形,继承于Shpae,

    class Rectangle extends Shape{

    //定专有属性长length、宽width

    private double length;

    private double width;

    //提供两个构造方法。

    public Rectangle(double length, double width) {

    super();

    this.length = length;

    this.width = width;

    }

    public Rectangle() {

    super();

    }

    public  double area(){

    return width*width;

    }

    }

    }

    public class Test{

    public  void drawShape(MakeShape s){

    s.draw();}

    }

    public void main(String[] args) {

    // TODO 自动生成的方法存根

    MakeShape s=new Circle();

    Test.drawShape(s);

    Test.drawShape(new  Rectangle());

    }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值