zoukankan      html  css  js  c++  java
  • 一个抽象类的经典案例

    1.根据周长计算不同形状图形的面积

    以正方形和圆形为例

    (1)分别定义Square类和Circle类,并且定义Square类和Circle类中的c属性和area方法。

    public class Circle Shape{
    private double c;
    public Circle(double c){
    this.c=c;
    }
    /**
    * 计算圆形的面积
    */
    public double area(){
    return 0.0796*c*c;
    }

    }

    public class Square Shape{
    private double c;

    public Square(double c){
    this.c=c;
    }
    /**
    * 计算正方形的面积
    * @param c
    */
    public double area(){
    return 0.0625*c*c;
    }

    }

    (2)定义父类Shape并抽取子类Square和Circle中共有属性c和方法area抽取到父类Shape中,并重构Square类和Circle类

    public abstract class Shape {
    protected double c;
    public abstract double area();

    }

    (3)修改Square类和Circle类。

    public class Circle extends Shape{
    private double c;
    public Circle(double c){
    this.c=c;
    }
    /**
    * 计算圆形的面积
    */
    public double area(){
    return 0.0796*c*c;
    }

    }

    public class Square extends Shape{
    private double c;

    public Square(double c){
    this.c=c;
    }
    /**
    * 计算正方形的面积
    * @param c
    */
    public double area(){
    return 0.0625*c*c;
    }

    }

    (4)定义计算最大面积的方法

    public static void maxArea(Shape[] shapes){
    double max=shapes[0].area();
    int maxIndex=0;
    for(int i=1;i<shapes.length;i++){
    double area=shapes[i].area();
    if(area>max){
    max=area;
    maxIndex=i;
    }
    }
    System.out.println("数组中索引为"+maxIndex+"的图形的面积最大,面积为:"+max);
    }

    (5)测试

    public static void main(String[] args){
    Shape[] shapes=new Shape[2];
    shapes[0]=new Circle(4);
    shapes[1]=new Square(4);
    maxArea(shapes);
    }

  • 相关阅读:
    JS匿名函数及调用及闭包
    js的变量提升和函数提升
    JS调用模式以及bind()方法
    转载:JS call()方法和apply()方法
    创建一个用于上传文件的表单
    POST 异步请求 url没有明文显示
    转载:nodejs res.end和res.send 区别
    HTTP中get和post区别
    通读cheerio API
    转载:JS数组reduce()和reduceRight()方法
  • 原文地址:https://www.cnblogs.com/karmapeng/p/6373266.html
Copyright © 2011-2022 走看看