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

2023-11-12

定义三个类,父类(抽象类)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());
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

7-4 多态练习-计算面积 的相关文章

随机推荐

  • 12面魔方公式图解法_【高级篇】(三)三阶魔方CFOP高级玩法之——F2L

    一 F2L这一步要干什么 1 先了解一下 棱角对 和 槽位 的概念 棱角对 即由一个棱块和一个角块构成 是F2L的基本单元 共四组 槽位 给 棱角对 预留的位置 即 棱角对 最后需要插入的地方 棱角对 和 槽位 的概念 2 棱角对 是如何插
  • 在 Android Studio 2.2 中愉快地使用 C/C++

    使用 Android studio 你可以将 C 和 C 代码编译成 native library 然后打包到你的 APK 中 你的 Java 代码可以通过 Java Native Interface JNI 调用 native libra
  • Lite Git (II) - Initialize

    Lite Git II Initialize 前言 本专栏名为Lite Git 主要想与Pro Git对应 后者为Git官方指南 有兴趣 或者想了解更多细节的同学 请移步官网下载PDF版 本专栏主要为了让初出茅庐的同学更快 更合理地掌握Gi
  • RxJS——异步数据流的响应式编程库(适合新手入门)

    文章目录 RxJS概述 Redux VS RxJS RxJS核心概念解析 热观察和冷观察 merge combine合流 RXJS6 的变化 RxJS概述 RxJS 全称 Reactive Extensions for JavaScript
  • 产线发现扣上电池就开机问题分析

    作者 AirCity 2020 3 1 Aircity007 sina com 本文所有权归作者Aircity所有 现象 某SDM630平台手机项目首件 扣上电池 没有按Power键 主板立即开机 问题分析 初步排查开机信号 VBUS信号
  • 前端面试常问题(持续整理中)

    1 js的运行机制 js主要用途是和用户互动 用来操作DOM 所以js是单线程的 避免了同时操作同一个DOM的矛盾问题 2 arguments对象是什么 它是一个类数组对象 它有length属性 但是没有数组的方法 它是如何转化成数组的呢
  • linux操作系统安装时间怎么看,Linux操作系统版本要怎么查看

    Linux操作系统版本要怎么查看 Linux可安装在各种计算机硬件设备中 比如手机 平板电脑 路由器 视频游戏控制台 台式计算机 大型机和超级计算机 下面是小编收集Linux操作系统版本 希望大家认真阅读 1 查看内核版本命令 chen m
  • HUE+LDAP+HIVE,报错:PLAIN auth failed: Error validating LDAP user

    我已经为hue集成了ldap 本次为hive集成ldap认证之后 登录hue后 在hive editor中执行sql语句报如下错误 Bad status 3 PLAIN auth failed Error validating LDAP u
  • Web服务(04)——LAMP的简介与搭建+DISCUZ论坛

    文章目录 LAMP的简介与搭建 DISCUZ论坛 前言 一 LAMP的简介 二 Apache服务 三 LAMP服务的搭建 1 编译安装apache服务 2 编译安装MYSQL服务 3 编译安装PHP服务 四 搭建DISCUZ论坛 总结 LA
  • Datax 的基本操作

    1 Datax 简介 DataX 是一个异构数据源离线同步工具 致力于实现包括关系型数据库 MySQL Oracle等 HDFS Hive ODPS HBase FTP等各种异构数据源之间稳定高效的数据同步功能 开源地址 https git
  • 【LeetCode训练营 189】轮转数组详解

    博客内容 LeetCode训练营 189 轮转数组详解 作 者 陈大大陈 个人简介 一个正在努力学技术的准前端 专注基础和实战分享 欢迎私信 欢迎大家 这里是CSDN 我总结知识和写笔记的地方 喜欢的话请三连 有问题请私信 目录 暴力法 辅
  • 一文看尽深度学习中的15种损失函数

    转自 https zhuanlan zhihu com p 377799012 在机器学习中 损失函数是代价函数的一部分 而代价函数则是目标函数的一种类型 1 Loss function 即损失函数 用于定义单个训练样本与真实值之间的误差
  • 解决PL/SQL 8 ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务的问题

    今天晚上貌似遇到的ORACLE11G问题特别多 不过还好 几经尝试 都在网上找到了答案并解决了这些问题 留个备份 PL SQL Developer工具在连oracle11g的时候 碰到了这个问题 ORA 12514 TNS 监听程序当前无法
  • 【C语言数据结构】带头节点与不带头节点的单链表头插法对比

    前言 近期在学习STM32代码框架的过程中 老师使用链表来注册设备 发现使用了不带头节点的单链表 注册时使用头插法 之前在本专题整理学习过带头节点的单链表 因此本文整理对比一下两种方式的头插法区别 具体实现在次 重点在于用以理解两种思路 以
  • Apikit 自学日记:API 异常监控-创建 API 监控

    如何在apikit中 创建 API 监控呢 创建并开启监控API 一 手动创建监控API Eolink API 网络监控平台支持从 Eolink API Management API管理产品 中导入API信息 或者手动创建监控API 进入A
  • (杭电多校)2023“钉耙编程”中国大学生算法设计超级联赛(3)

    1005 Out of Control 先将序列a升序 然后离散化 比如说序列a为1000 1000 500 200 10 然后升序后为10 200 500 1000 1000 映射到从1开始的数 为1 2 3 4 4 此即为前缀最大值序列
  • Flask 学习-70.Flask-RESTX 注册接口实例

    前言 注册接口主要是密码需要加密 用到werkzeug security 模块的2个方法generate password hash check password hash 数据库操作用到Flask SQLAlchemy 相关的基础配置就不
  • 如何利用路由器连接wifi并将wifi网络分发出去

    有时候 我们的wifi网络设置了最大连接数 该数字小于我们的需求数 我们可以考虑利用路由器来进一步分发wifi网络 下面以tp link的产品为例介绍如何分发网络 1 开启路由器 让其发出广播信号 2 使用电脑无线功能连接该路由器 登录路由
  • Vue项目this.$router.push()找不到push问题

    在使用Vue cli开发项目时 我喜欢使用Es6语法 但在使用语法跳路由时却会受到报错 因为Es6的箭头函数的this指向的是最近的一个this 而不是全局的 所以会造成找不到路由方法的问题 解决方法 使用传统语法 XXX function
  • 7-4 多态练习-计算面积

    定义三个类 父类 抽象类 GeometricObject代表几何形状 子类Circle代表圆形 子类Rectangle代表矩形 具体属性和方法如下 父类 抽象类 GeometricObject 属性 private String color