Java抽象类及其实现

2023-05-16

任务描述

定义一个形状(sharpe)的抽象类,具有求面积的抽象方法。再分别定义sharpe类的实现类:三角形(triangel)。

编程要求

  • 定义一个描述形状(sharpe)的抽象类,包括公有的成员属性PI(常量),求面积的抽象方法getArea(),该方法的返回值类型是double类型,输出面积的抽象方法printArea(),该方法没有返回值;

  • 定义三角形类(triangle)继承抽象类sharpe并实现了其抽象方法getArea()和printArea()。

  • 三角形类具有私有的属性:a、b、c,用于存放三角形三条边长,数据类型为int。还定义了带三个参数的构造方法,用于给三边赋初值。

  • 在getArea()方法中,求面积之前先判断三边是否构成三角形,如果构成三角形,返回三角形的面积,如果不构成三角形,返回值为0。 注:求三角形面积使用海伦公式:s=sqrt(p*(p-a)(p-b)(p-c)),求平方根应调用Math类的sqrt()方法,见书183页。

  • 在输出面积的printArea()方法中,调用getArea()方法求三角形面积。若面积为0,输出“不构成三角形”,否则输出三角形的面积; 注:判实数aera是否等于0,应采用如下方法:if(Math.abs(area)<1e-10)。

  • 创建测试类TriangleTest,在测试类中创建一个Triangle类的实例,通过构造方法给Triangle类的对象属性赋初值,然后通过该对象调用类的printArea()方法输出三角形的面积。

注: 以上各个类的定义,均各自定义在一个单独的.java文件中。

package case6;

 /*******在下面定义抽象类Sharpe*****/
 public class Sharpe {
    abstract class Area{
        public abstract void getArea();
    }
}  
package case6;
 /*******在下面定义三角形类Triangle继承自抽象类Sharpe,并实现其所有的抽象方法*****/
public class Triangle extends Sharpe{
    private int sideA;
    private int sideB;
    private int sideC;
    double area;
    boolean bool;
    public Triangle(int a, int b, int c) {
        setSide(a,b,c);
    }
    public void setSide(int a, int b,int c){
        sideA=a;
        sideB=b;
        sideC=c;
        if(a+b>c&&a+c>b&&b+c>a) {
            bool=true;
        }else {
            bool=false;
        }
    }
    double getArea() {
        if(bool) {
            double n=(sideA+sideB+sideC)/2.0;
            area=Math.sqrt(n*(n-sideA)*(n-sideB)*(n-sideC));
            return area;
        }
        else 
        {
            return 0;
        }
                  
    }
}

package case6;

import java.util.Scanner;

public class TriangleTest {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int a=scan.nextInt();
        int b=scan.nextInt();
        int c=scan.nextInt();
        /*******在下面创建三角形类Triangle的一个实例,并输出该对象的面积*****/
        Triangle triangle=new Triangle(a,b,c);
        triangle.getArea();
        if(Math.abs(triangle.area)<1e-10)
            System.out.print("不构成三角形");
        else
           System.out.println("三角形的面积是:"+triangle.area);
    }

}

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

Java抽象类及其实现 的相关文章

  • 如何从Firebase Firestore实时更新文档中获取修改后的字段或数据? [复制]

    这个问题在这里已经有答案了 我有多个文档 我的问题是我无法获取修改的特定数据 我正在获取完整的文档 db collection employees whereEqualTo OID OID addSnapshotListener new E
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • 何时在 hibernate 中使用 DiscriminatorValue 注解

    在 hibernate 中使用 DiscriminatorValue 注释的最佳场景是什么以及何时 这两个链接最能帮助我理解继承概念 http docs oracle com javaee 6 tutorial doc bnbqn html
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • 一个可以直接使用的用于python日志记录的类

    一个用于Python3程序的日志记录类 xff0c 使用的时候 xff0c 将该类import进去后 xff0c 按照这里面的最后两行的测试程序使用即可 程序贴在这里 xff0c 省的以后造轮子 Github xff1a https git
  • python 安装 第三方库报错 -— 需要Visual C++ 14.0 compiler 及以上

    python 安装 第三方库报错 xff1a error Microsoft Visual C 43 43 14 0 or greater is required Get it with 34 Microsoft C 43 43 Build
  • 时间序列模型 (一):模型概述

    时间序列的其它博文系列 xff1a 时间序列模型 xff08 一 xff09 xff1a 模型概述 时间序列模型 xff08 二 xff09 xff1a 移动平均法 时间序列模型 xff08 三 xff09 xff1a 指数平滑法 时间序列
  • ubantu18开启audit审计日志

    1 检查系统是否安装audit服务 service auditd status 2 安装命令 sudo apt get install auditd 审计规则 auditctl w etc passwd p rwxa xff08 注意 xf
  • CentOS8 使用yum 安装 jdk8

    原文地址 1 安装方法 CentOS8上使用 yum 直接安装 xff0c 环境变量自动配置好 2 查看是否已安装 看到下面结果 xff0c 说明已经安装配置 jdk 1 2 3 4 root 64 localhost java versi
  • npm 更新不了,一直提示not support Node.js v12.18.4

    使用npm命令一直提示 xff1a npm WARN npm npm does not support Node js v12 18 4 根据网上提供的方法是全局更新npm npm i g npm 运行后仍然一直提示 npm WARN np
  • 特别实用而且功能强大的attributedText属性

    span class hljs preprocessor import span class hljs title 34 ViewController h 34 span span span class hljs preprocessor
  • 基本计算器算法实现

    基本计算器 没有括号基本计算 题目 给你一个字符串表达式 s xff0c 请你实现一个基本计算器来计算并返回它的值 整数除法仅保留整数部分 你可以假设给定的表达式总是有效的 所有中间结果将在 231 231 1 的范围内 注意 xff1a
  • 在windows和ubuntu下安装Syncthing

    Syncthing 一个可以用在不同设备之间 xff0c 同步文件的工具 window下安装 有客户端版本的 xff0c 由社区维护 xff0c 我下下来试了下 xff0c 没有跟到最新版本 xff0c 看其他文章好像有 bug xff0c
  • 自定义手写JDK动态代理

    前言 根据Java Porxy 实现原理实现我们手写的自定义代理类 xff0c 实现简易的动态代理流程 自定义InvocationHandler span class token keyword package span com span
  • PDFBox 优化内存方案

    前言 版本基于2 0 27 最近使用pdfbox 导入发现内存使用占用特别高 xff0c 通过查阅官方资料发现pdfbox 在处理一些复杂的pdf 消耗内存特别高 xff0c 这个是没法避免的 xff0c 内存设置小的很有可能导致内存溢出
  • 使用PageOffice实现文档(word,excel,pdf)在线预览编辑

    最近发现一款不错的插件的PageOffice 地址是 xff1a http www zhuozhengsoft com Technical 他可以实现word excel pdf在线预览以及在线编辑 虽然商用的话需要收费 xff0c 但是有
  • 存储过程实现批量插入数据

    前几天在公司做一业务模块测试的时候 xff0c 将测试都删除了 xff0c 导致客户端想拿测试数据拿不到了 xff0c 一下没时间一条一条的录数据 xff0c 所以只有采取存储过程实现模拟数据插入 数据需求 xff1a 有两个字段类型是De
  • 如何排查 tomcat 启动失败一闪而过原因

    1 问题描述 xff1a tomcat这个一闪而过 应该是老生常谈的问题了 xff0c 今天主要是以我出现的问题 xff0c 提供一个解决方案 因为一闪而过原因有多种 2 前面的基本配置就不再这里一一阐述了 直接记录我怎么找到自己的一闪而过
  • Java 实现表格导出到Excel(.xlsx)

    最近项目中需要将table 中数据导出到excel xff0c 当时我想的两种方案 xff0c 一种是通过前端插件TableExport js 发现简单使用的话 xff0c 只是可以导出table 中原生的数据 一旦table 有jstl
  • git 常用命令以及提交步骤

    git常使用的命令 1 git init 在当前目录新建一个代码库 2 git config user name 61 git config user email 61 设置代码提交时候的信息 3 git clone 需要clone 远程地
  • Java日志门面技术 SLF4J

    文章目录 背景SLF4J概述切换日志框架实际应用配合自身简单日志实现 slf4j simple 配置logback日志实现配置Log4J日志实现 需适配器 配置JUL日志实现 需适配器 添加slf4j nop依赖 日志开关 桥接旧的日志实现
  • 阿里云服务器(Ubuntu18.04版本)中安装coturn穿透服务器

    阿里云服务器 xff08 Ubuntu18 04版本 xff09 中安装coturn穿透服务器 一 安装依赖库二 下载源码并编译安装三 coturn启动命令四 阿里云端口配置五 安装 配置完成后测试 一 安装依赖库 sudo apt spa
  • 阿里云服务器(Ubuntu18.04版本)中安装Kurento流媒体服务器

    阿里云服务器 xff08 Ubuntu18 04版本 xff09 中安装Kurento流媒体服务器 一 安装coturn穿透服务器二 kurento Media Server KMS 卸载 安装 配置 一 安装coturn穿透服务器 具体如
  • Java抽象类及其实现

    任务描述 定义一个形状 xff08 sharpe xff09 的抽象类 xff0c 具有求面积的抽象方法 再分别定义sharpe类的实现类 xff1a 三角形 xff08 triangel xff09 编程要求 定义一个描述形状 xff08