当前位置: 首页 > article >正文

7-4 多态练习-计算面积

定义三个类,父类(抽象类)GeometricObject代表几何形状,子类Circle代表圆形,子类Rectangle代表矩形。具体属性和方法如下:
父类 (抽象类)GeometricObject
属性:
private String color;
private String name;
为上述变量提供getter()和setter()方法
构造方法:为color和name初始化
public GeometricObject(String color, String name)
抽象方法:
public void findArea();用于计算几何图形的面积

子类:
Circle
属性:
private double radius;半径
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color和radius初始化
方法:
实现findArea()方法用于计算圆形的面积并返回计算结果

子类:
Rectangle
属性:
private double width;宽
private double height;高
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color,width和height初始化
方法:
实现findArea()方法用于计算矩形的面积并返回计算结果

测试类Main
方法:
public static void main(String[] args) {
创建圆形对象("长方形","蓝色",3.2,4.5)
输出圆形的颜色和面积
创建矩形对象("圆形","红色",3.4)
输出矩形的颜色和面积
}
public static void show(GeomentricObject g){
//形参传入圆形或者矩形的对象,输出其面积
//判断传入的对象是圆形还是矩形
//如果是圆形就输出圆形的颜色和面积;
//如果是矩形就输出矩形的颜色和面积;
}
注意:1.所有类不用修饰词
2.测试类名称为“Main”,否则编译出错

在这里给出一组输入。例如:

 

输出样例:

在这里给出相应的输出。例如:

矩形的颜色是:蓝色,面积是:14.4
圆形的颜色是:红色,圆形的面积是:36.31681107549801

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

package com.itheima.demo;//PTA需要去掉
import javax.swing.*;//PTA需要去掉
import java.util.Scanner;
abstract class GeometricObject{
    private String color;
    private String name;

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public GeometricObject(String color,String name){

    }
    public abstract double findArea();
}
class Circle extends GeometricObject{
    private double radius;

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }
    public Circle(String name,String color,double redius){
        super(color,name);
        super.setName(name);
        super.setColor(color);
        setRadius(redius);
    }
    public double findArea(){
        return Math.PI*getRadius()*getRadius();
    }
}
class Rectangle extends GeometricObject{
    private double width;
    private double height;

    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 Rectangle(String name,String color,double width,double height){
        super(color,name);
        super.setName(name);
        super.setColor(color);
        setWidth(width);
        setHeight(height);
    }
    public double findArea(){
        return getHeight()*getWidth();
    }
}
public class Main{
    public static void main(String[] args) {
        Scanner s =new Scanner(System.in);
        Rectangle a=new Rectangle("长方形","蓝色",3.2,4.5);
        System.out.println("矩形的颜色是:"+a.getColor()+",面积是:"+a.findArea());
        Circle b=new Circle("圆形","红色",3.4);
        System.out.println("圆形的颜色是:"+b.getColor()+",圆形的面积是:"+b.findArea());
        //show(a);没有用到show()
    }
    public static void show(GeometricObject g){
        g.findArea();
        if(g instanceof Circle){
            Circle b=(Circle)g;
            System.out.println(b.getColor());
            System.out.println(b.findArea());
        }
        else{
            Rectangle a=(Rectangle)g;
            System.out.println(a.getColor());
            System.out.println(a.findArea());
        }
    }
}


http://www.kler.cn/a/15525.html

相关文章:

  • C语言项⽬实践-贪吃蛇
  • 【配置后的基本使用】CMake基础知识
  • .NET 9.0 中 System.Text.Json 的全面使用指南
  • 层归一化和批归一化
  • 常用命令之LinuxOracleHivePython
  • Ubuntu22.04LTS 部署前后端分离项目
  • 如何实现U盘低格?这样操作快速搞定!
  • [python][vpython]用vpython实现小球砸弹簧代码
  • 十四、51单片机之AD转换
  • 第五章 资源包使用
  • 代码随想录算法训练营第58天|739. 每日温度,496.下一个更大元素 I
  • MongoDB (一) Java使用MongoDB[CURD]
  • python@可变对象和不可变对象@按值传递和引用传递@python运行可视化工具
  • Leetcode力扣秋招刷题路-0852
  • 优思学院|精益生产为企业带来革命性转变的效益
  • Linux centos重装yum
  • GCM与CCM的的规格和加解密过程
  • 网页爬虫之WebPack模块化解密(JS逆向)
  • 学习笔记-主成分分析法
  • SpringBoot+Vue3实现登录验证码功能
  • CentOS计划任务的用法
  • 学系统集成项目管理工程师(中项)系列13a_人力资源管理(上)
  • Whistle安装与使用
  • javaEE+mysql学生竞赛管理系统
  • 亚马逊广告怎么做?广告效果如何提升?
  • 六级英语历年真题单词--按年份分类--持续更新中...