Java自学第五十一天

  今天做C++典型例题。

  

定义shape类,无数据成员,包含两个纯虚函数成员void setvalues() 和float area() ,由shape类进行派生如下:

矩形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

三角形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

正方形类,包含一个数据成员变量用于描述边长,float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

圆形类,包含一个数据成员变量用于描述半径,float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

在主函数中定义相应的指针对象和普通对象,利用虚函数实现多态,依次分别输入矩形的底和高,三角形的底和高,正方形的边长,圆形的半径,若其中任何一个值小于等于0,则输出Set Value Error!,然后退出程序,对于之前已正确输入的数值计算相应形状的面积。

    代码如下

  

package hello;

import java.util.Scanner;

abstract class shape{

    abstract public void setvalues(float a,float b);

    abstract public float area();

}

class juxing extends shape{

    private float di,gao;

    public void setvalues(float a,float b) {

        di=a;

        gao=b;

    }

    public float area() {

        return di*gao;

    }

}

class sanjiao extends shape{

    private float di,gao;

    public void setvalues(float a,float b) {

        di=a;

        gao=b;

    }

    public float area() {

        return di*gao/2;

    }

}

class zheng extends shape{

    private float bian;

    public void setvalues(float a,float b) {

        bian=a;

    }

    public float area() {

        return bian*bian;

    }

}

class yuan extends shape{

    private float r;

    public void setvalues(float a,float b) {

        r=a;

    }

    public float area() {

        return (float) (3.14*r*r);

    }

}

public class helloword {

    public static void main(String[] args){

    Scanner cn=new Scanner(System.in);

    System.out.println("输入矩形的底和高");

    juxing j=new juxing();

    j.setvalues(cn.nextFloat(), cn.nextFloat());

    System.out.println("矩形面积:"+j.area());

    sanjiao s=new sanjiao();

    System.out.println("输入三角形的底和高");

    s.setvalues(cn.nextFloat(),cn.nextFloat());

    System.out.println("三角形的面积:"+s.area());

    zheng z=new zheng();

    System.out.println("输入正方形的边长");

    z.setvalues(cn.nextFloat(), 0);

    System.out.println("正方形的面积:"+z.area());

    yuan y=new yuan();

    System.out.println("圆的半径");

    y.setvalues(cn.nextFloat(),0);

    System.out.println("圆的面积:"+y.area());

    }

}

   这道题目都继承了一个类shape,都会重写shape类中的函数,可以算多个图形的面积。

  明天继续做C++典型例题。

原文地址:https://www.cnblogs.com/ruangongwangxiansheng/p/13591344.html