继承与多态2

2.5(杨.丹尼尔梁英文第11版P537:*13.12)(几何对象的面积求和)写一个方法,将数组中所有几何对象的面积求和。

方法签名是:
公共静态双求和区域(几何对象【】a)
编写一个测试程序,创建一个包含四个对象(两个圆和两个矩形)的数组,并使用sumArea方法计算它们的总面积。

package six;
import java.util.Scanner;
public class jihe {
public static void main(String[] args) {
class Circle{
public double radius,k;
public Circle(double radius,double k){
this.radius=radius;
this.k=k;
}
public double getRadius(){
return radius;
}
public double getK(){
return k;
}
public double Area() {
if(k==0) {
return Math.PI*radius*radius;}
else {
return radius*k;
}
} 
}
Scanner scanner=new Scanner(System.in);
double[] a=new double[8];
int i,j;
double s=0;
for(i=0;i<8;i++){
a[i]=scanner.nextDouble();
}
for(j=0,i=0;j<4&&i<8;j++,i+=2) {
Circle circlei=new Circle(a[i],a[i+1]);
s+=circlei.Area();
}
System.out.println("总面积为:"+s);
}
}

 2.6(由丹尼尔梁英文第11版P536:*13.11)(八边形类)编写一个名为八边形的类,它扩展了地理对象,实现了可比较和可克隆接口。


假设八边形的八条边长度相等。面积可以用下面的公式计算:
面积=(2+4/22)×边×边
写一个测试程序,创建一个八边形对象,边值为5,并显示它的面积和周长。使用clone方法创建一个新对象,并使用compareTo方法比较两个对象。

package six;
import java.util.Scanner;
interface Comparable{
int compare(EightAngle eightAngle);
}
interface Kelong{
void clone(GeometricObject geometricObject);
}
abstract class GeometricObject{
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;public GeometricObject() {
dateCreated = new java.util.Date();
}public GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}public String getColor() {
return color;
}public void setColor(String color) {
this.color = color;
}public boolean isFilled() {
return filled;
}public void setFilled(boolean filled) {
this.filled = filled;
}public java.util.Date getDateCreated() {
return dateCreated;
}public String toString() {
return "color: " + color + " and filled: " + filled;
}
abstract double getArea();
abstract double getPerimeter();
}
class EightAngle extends GeometricObject{
public double side;
public EightAngle(double side) {
this.side=side;
}
public double getArea() {
return (2+4.0/22)*side*side;
}
public double getPermire() {
return 8*side;
}
public int compare(EightAngle other) {
if(this.getArea()>other.getArea()) {
return 1;
} else if(this.getArea()<other.getArea()) {
return -1;
} else{
return 0;
}
}
public void clone(EightAngle other){
other.side=this.side;
} 
}
public class eightbian {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double a=scanner.nextDouble();
double b=scanner.nextDouble();
EightAngle eightAngle1=new EightAngle(a);
EightAngle eightAngle2=new EightAngle(b);
int r=eightAngle1.compare(eightAngle2);
if(r>0) {
System.out.println("eightAngle1面积更大");
}
else if(r==0) {
System.out.println("两个面积一样大");
}
else {
System.out.println("eightAngle2面积更大");
}
System.out.println("面积1为:"+eightAngle1.getArea());
System.out.println("周长1为:"+eightAngle1.getArea());
System.out.println("面积2为:"+eightAngle2.getArea());
System.out.println("周长2为:"+eightAngle2.getArea());
eightAngle1.clone(eightAngle2);
System.out.println("将eightAngle1克隆给eightAngle2,此时eightAngle2的面积和周长分别为:");
System.out.println("面积2为:"+eightAngle2.getArea());
System.out.println("周长2为:"+eightAngle2.getArea());
System.out.println("将eightAngle1克隆给eightAngle2,此时eightAngle1的面积和周长分别为:");
System.out.println("面积2为:"+eightAngle1.getArea());
System.out.println("周长2为:"+eightAngle1.getArea());
}
}

 其实克隆就是把要克隆的数据赋给被克隆的数据即可

 设计一个Triangle类继承自GeometricObject类
设计一个名为Triangle的类来扩展GeometricObject类。该类包括:

三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是1.0。
一个无参构造方法创建默认的三角形。
一个能创建带制定side1、side2和side3的三角形的构造方法。
所有三个数据域的访问器方法。
一个名为getArea()的方法返回这个三角形的面积。
一个名为getPerimeter()的方法返回这个三角形的周长。
一个名为toString()的方法返回这个三角形的字符串描述,返回的信息包括三角形的颜色、是否填充和三条边的边长。

package six;
import java.util.Scanner; 
//GeometricObject类 
public abstract class GeometricObject{
public static void main(String[] args) {
class Triangle extends GeometricObject{
public double side1,side2,side3;
public Triangle(){
this.side1=1.0;
this.side2=1.0;
this.side3=1.0;
}
public Triangle(double newSide1,double newSide2,double newSide3){
this.side1=newSide1;
this.side2=newSide2;
this.side3=newSide3;
}
public void setSide1(double newSide1){
this.side1=newSide1;
}
public double getSide1(){
return side1;
}
public void setSide2(double newSide2){
this.side2=newSide2;
}
public double getSide2(){
return side2;
}
public void setSide3(double newSide3){
this.side3=newSide3;
}
public double getSide3(){
return side3;
}
public double getArea(){
double l=(side1+side2+side3)/2;
return Math.sqrt(l*(l-side1)*(l-side2)*(l-side3));
}
public double getPerimeter(){
return side1+side2+side3;
}
public String toString(){
return "color: "+getColor()+" and filled: "+isFilled()+"\n"+"Triangle: side1="+side1+" side2="+side2+" side3="+side3;
}
}
Scanner input = new Scanner(System.in);
double side1 = input.nextDouble();
double side2 = input.nextDouble();
double side3 = input.nextDouble();
Triangle triangle = new Triangle(side1, side2, side3);
String color = input.next();
triangle.setColor(color);
boolean filled = input.nextBoolean();
triangle.setFilled(filled);
System.out.println("The area is " + triangle.getArea());
System.out.println("The perimeter is " + triangle.getPerimeter());
System.out.println(triangle);
}private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
public GeometricObject() {
dateCreated = new java.util.Date();
}
public GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean isFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
public java.util.Date getDateCreated() {
return dateCreated;
}
public String toString() {
return "color: " + color + " and filled: " + filled;
}
public abstract double getArea();
public abstract double getPerimeter();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高速数据传输新纪元?ADT-Link领先推出USB4转PCIe 4.0桥接板

在科技飞速发展的今天&#xff0c;数据传输速度一直是推动行业进步的关键驱动力。最近&#xff0c;备受瞩目的硬件制造商ADT-Link宣布推出一款引领潮流的新产品——USB4转PCIe 4.0桥接板&#xff0c;这一创新设备势必会显著提升数据传输效率&#xff0c;为用户带来前所未有的高…

NI PXIe-7857R与PXIe-8842的区别

一、NI PXIe-7857R 类型&#xff1a; FPGA模块&#xff1a;基于FPGA的可编程I/O模块。 主要功能&#xff1a; FPGA处理&#xff1a;包含Xilinx Kintex-7 FPGA&#xff0c;支持自定义逻辑和处理。 I/O接口&#xff1a;提供丰富的模拟和数字I/O通道。 高速数据处理&#xff1a…

软件测试新手要达到一个什么水平才能找到一份9K的工作?

我的读者里有很多 软测 新人&#xff0c;新人是指正在学 测试 的、以及工作时间不长的年轻人&#xff0c;他们经常问我一个问题&#xff1a; 自学到什么程度才能找到一份还不错的测试工作&#xff1f; 今天我就从我自己面试新人的角度来回答一下&#xff0c;我会把面试的知识点…

查询指定会话免打扰

查询指定用户&#xff08;requestId) 为指定会话&#xff08;targetId&#xff09;的设置的免打扰状态。 提示 该设置为用户级别设置。对应的设置接口详见设置指定会话免打扰。 请求方法 POST&#xff1a; https://数据中心域名/conversation/notification/get.json 频率限…

AVFrame结构体分析

AVFrame是FFmpeg中的一个核心数据结构&#xff0c;用于表示音频或视频的帧。它包含了一系列用于描述帧数据和元数据的字段。以下是对AVFrame结构体的详细分析&#xff0c;包括其主要字段及其作用。 AVFrame的定义 在FFmpeg的源代码中&#xff0c;AVFrame的定义可以在avframe.…

Nginx网页服务

nginx的配置: 1、全局块&#xff1a;全局配置&#xff0c;对全局生效&#xff1b; 2、events块&#xff1a;配置影响 Nginx 服务器与用户的网络连接&#xff1b; 3、http块&#xff1a;配置代理&#xff0c;缓存&#xff0c;日志定义等绝大多数功能和第三方模块的配置&#xf…

【Python编程实践2/3】Python图像处理模块(上)

目录 引言 目标 安装模块 Windows系统 macOS系统 路径 Windows路径 ​编辑macOS路径 windows路径报错 windows路径前的r 示例代码 windows快速查看路径 macOS快速查看路径 打开图片 展示图片 下节预告 总结 引言 欢迎各位大佬垂阅本篇Python实践博客&a…

【教学类-59-01】专注力视觉训练01(圆点百数图)

背景需求&#xff1a; 视觉训练的神奇效果&#xff0c;让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— &#x1f50d;视觉训练&#x1f50d; &#x1f539;想要提高宝宝的专注力&#xff0c;视觉训练是个绝佳方法&#xff01; &#x1f539;让宝宝仔细观察数字的路线&a…

微信小程序毕业设计-农场驿站平台系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

HoneyTrap蜜罐系统实践操作@FreeBSD

HoneyTrap介绍 HoneyTrap是一个可扩展的开源系统&#xff0c;用于运行、监控和管理蜜罐。 HoneyTrap蜜罐系统通过在网络中部署感应节点&#xff0c;实时感知周边网络环境&#xff0c;并将感应节点的日志进行实时存储和可视化分析&#xff0c;从而实现对网络环境中威胁情况的感…

Honor of Kings 2024.03.29 Ban for 3 day

我又被举报消极然后禁赛 都说了别选蔡文姬&#xff0c;对面三个肉&#xff0c;非要选个软辅助 吐槽下这游戏策划&#xff1a;游戏体验感越来越差&#xff0c;公正也很差 对说了对面4个法师&#xff0c;就是不出魔抗&#xff0c;把把都是0-N开局&#xff0c;到底谁消极啊&#x…

stable Diffusion缺失模型补充地址

Hires. fix 8x_NMKD-Superscale https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/8x_NMKD-Superscale_150000_G.pth 放置位置: \models\ESRGAN

【工具使用】在vscode中用python绘图

安装拓展Jupyter Keymap 然后重启vscode在代码之前加上这个代码&#xff0c;利用jupyter一行一行运行 # %%点击Run Cell即可运行 # %% import matplotlib.pyplot as plt# 提供的数据 data [0.02856750446367257, 0.248564674096589, 0.1645266594124048, 0, 0.375108941955725…

智能台灯系统之哪种调光方式更节能?

在节能方面&#xff0c;不同的调光方式有不同的表现。 PWM调光通过反复开关驱动器来控制LED灯的实际输出功率&#xff0c;以达到照明调光的目的。这种方式能够在最小电流和最大电流之间进行频繁的切换&#xff0c;从而调节照明灯具的亮度。由于LED照明光源仅处于接通或关断两种…

通关!游戏设计之道Day18

过场动画&#xff0c;或者说根本没人看的东西 过场动画是一系列的动画或实时的动作序列&#xff0c;用来推进剧情制造大场面&#xff0c;烘托气氛&#xff0c;展示对话和角色成长&#xff0c;以及显现在某些情况下被玩家忽略的相关线索。 过场动画是一把双刃剑&#xff0c;一方…

二叉树链式结构的前序_中序_后续_层序遍历【详细图解】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

Excel 导入

依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency> service 读取excel文件的行数据 DataExcelListener<DeviceTemplateExcel> listener new…

MFC CList<CRect, CRect> m_listRect;的用法

CList<CRect, CRect&> 是 MFC&#xff08;Microsoft Foundation Classes&#xff09;中定义的一个双向链表模板类&#xff0c;用于存储 CRect 对象。在使用 CList 时&#xff0c;你可以执行多种操作&#xff0c;比如添加、移除、查找和遍历元素。以下是一些常见的用法…

SAP 生产订单报工函数BAPI_PRODORDCONF_CREATE_TT不返回报错信息

最近财务一直反馈MES报工的数据都没有成本,然后去查看原因发现是财务当月的KP26的价格没有进行维护,导致没有收集到工单的报工成本。 但是在前台操作CO11 报工的时候,系统会给出报错的信息 但是我们在调用函数BAPI_PRODORDCONF_CREATE_TT的时候,系统并没有返回报错的信息…

普通测径仪和智能测径仪的五大区别

在工业自动化和精密测量的领域中&#xff0c;测径仪是不可或缺的重要工具。随着科技的进步&#xff0c;测径仪也在不断地进行技术革新和升级&#xff0c;从传统的普通测径仪发展到如今的智能测径仪。本文将详细探讨普通测径仪与智能测径仪之间的五大区别。 一、测量精度与稳定…