Java经典编程300例之实例061 计算几何图形的面积(抽象类)

实例说明

对于每个几何图形而言,都有一些共同的属性,如名字和面积等,而其计算面积的方法却各不相同。为了简化开发,本实例将定义一个超类来实现输出名字的方法,并使用抽象方法来计算面积。

 

实现过程

创建一个抽象类,名称为Shape。在该类中定义两个方法,一个是getName(),用于使用反射机制获得类名称;另一个是抽象方法getArea(),并未实现。

Shape.java

public abstract class Shape {
    public String getName() {                        //获得图形的名称
        return this.getClass().getSimpleName();
    }
    public abstract double getArea();                //获得图形的面积
}

再创建一个名称为Circle的类,该类继承自Shape,并实现了抽象方法getArea()。在该类的构造方法中,获得了圆形的半径,用于在getArea()中计算面积。

 Circle.java

public class Circle extends Shape {
    private double radius;                       //圆形的半径
    public Circle(double radius) {
        this.radius = radius;
    }
    @Override
    public double getArea() {                    //计算圆形的面积
        return Math.PI * Math.pow(radius, 2);
    }
}

再创建一个名称为Rectangle的类,该类继承自Shape,并实现了抽象方法getArea()。在该类的构造方法中,获得了矩形的长和宽,用于在getArea()中计算面积。

Rectangle.java 

public class Rectangle extends Shape {
    private double length;                      //矩形的长
    private double width;                       //矩形的宽
    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }
    @Override
    public double getArea() {                   //计算矩形的面积
        return length * width;
    }
}

再创建一个名称为Test的类,用于进行测试,在该类中创建CircleRectangle对象,并分别输出图形的名称和面积。

 Test.java

public class Test {
    public static void main(String[] args) {
        Circle circle = new Circle(1);                    //创建圆形对象并将半径设置为1
        System.out.println("圆形的名称是:" + circle.getName());
        System.out.println("圆形的面积是:" + circle.getArea());
        Rectangle rectangle = new Rectangle(1, 1);        //创建矩形对象并将长和宽设置为1
        System.out.println("矩形的名称是:" + rectangle.getName());
        System.out.println("矩形的面积是:" + rectangle.getArea());
    }
}

在抽象类中,可以定义抽象方法(使用关键字abstract修饰的方法),也可以定义普通方法。包含抽象方法的类必须是抽象类,而抽象类不是必须包含抽象方法。对于抽象方法而言,仅定义一个声明即可,即抽象方法是没有方法体的。

 

 编译运行

$ javac Shape.java Circle.java Rectangle.java Test.java
$ java Test
圆形的名称是:Circle
圆形的面积是:3.141592653589793
矩形的名称是:Rectangle
矩形的面积是:1.0

 

技术要点

本实例应用的主要技术就是抽象类。下面对抽象类进行介绍。

在设计类的过程中,通常会将一些类所具有的公共属性和方法移动超类中,这样就不必重复定义了。然而这些类的超类却经常没有实际意义。通常将它设置成抽象的,这样可以避免创建该类的对象。声明一个最简单的抽象类的代码如下:

     public abstract class Shape{}

参数说明

Shape:抽象类的类名。

 

抽象类是不能直接实例化的,如果要获得该类的实例可以使用静态方法创建其实现类对象。

 

疑问

抽象类与接口的区别?

 

 

  • 17
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值