继承与多态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();
}
相关文章:
继承与多态2
2.5(杨.丹尼尔梁英文第11版P537:*13.12)(几何对象的面积求和)写一个方法,将数组中所有几何对象的面积求和。 方法签名是: 公共静态双求和区域(几何对象【】a) 编写一个测试程序&…...
在RT-Thread下为MPU手搓以太网MAC驱动-3
文章目录 MAC驱动支持不同的PHY芯片关于对PHY设备抽象的改进RT-Thread下PHY设备抽象接口的改进关于对PHY设备抽象的改进 这是个人驱动开发过程中做的一些记录,仅代表个人意见和理解,不喜勿喷 MAC驱动需要支持不同的PHY芯片 MAC驱动支持不同的PHY芯片 关…...
Cocos Creator 2D物理引擎的使用详解
前言 Cocos Creator是一款优秀的游戏开发工具,它提供了强大的2D物理引擎,帮助开发者轻松实现游戏中的物理效果。在本文中,我们将详细介绍Cocos Creator中2D物理引擎的使用方法,并通过代码实现来演示其具体应用。 对惹࿰…...
618局外人抖音:别人挤压商家“拼价格”,它默默联合商家“抢用户”?
文|新熔财经 作者|宏一 “618”来临之际,各电商平台和短视频平台早已打响了“促销大战”。不过,今年各大平台都更积极适应新的消费形式,调整了“大促动作”。 比如淘宝、京东带头取消了沿用十年之久的预售机制&…...
【Unity AR开发插件】五、运行示例程序
专栏 本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。 链接: Unity开发AR系列 热更数据制作:制作热更数据-AR图片识别场景 插件简介 通过热更技术实现动态地加载AR场景,简化了AR开发流程,让用户可…...
JavaScript className 类名属性操作
在JavaScript中,可以通过className属性来操作HTML元素的类名。 添加类名:可以使用element.className "className"来添加一个类名到元素中。 var element document.getElementById("myElement"); element.className " newC…...
做场外个股期权怎么询价
做场外个股期权怎么询价?没有具体的哪家做市商是询价是最低的,个人投资者需要通过机构通道方询价进行对比,各券商的报价由询价机构方提供给到投资者,可以参考不同券商的报价进行比对,再决定是否进行投资。本文来自&…...
Databend 开源周报第 146 期
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持 Expressio…...
Android12.0 SIM卡语言自适应
文章目录 需求语言设定Settings中语言切换流程检测到SIM卡,更新系统语言最终修改 需求 要求系统语言跟随SIM卡的语言变化。 语言设定 (1)系统预置语言, 即在makefile中指定的语言 (2)重启, 如果未插卡, 则系统语言为预置的语言 (3)重启插入SIM卡开机, 会自适应为…...
滴滴一季度营收同比增长14.9%至491亿元 经调整EBITA盈利9亿元
【头部财经】5月29日,滴滴在其官网发布2024年一季度业绩报告。一季度滴滴实现总收入491亿元,同比增长14.9%;经调整EBITA(非公认会计准则口径)盈利9亿元。其中,中国出行一季度实现收入445亿元,同…...
C语言 指针——指针变量的定义、初始化及解引用
目录 指针 内存如何编址? 如何对变量进行寻址? 用什么类型的变量来存放变量的地址? 如何显示变量的地址?编辑 使用未初始化的指针会怎样? NULL是什么? 如何访问指针变量指向的存储单元中的数据? 指针变量的…...
详解 Spark 的运行架构
一、核心组件 1. Driver Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作主要负责: 将用户程序转化为作业 (job)在 Executor 之间调度任务 (task)跟踪 Executor 的执行情况通过 UI 展示查询运行情况 2. Exec…...
盲盒小程序开发,为市场带来的新机遇
近年来,盲盒市场一直处于热门行业中,发展非常快速。在互联网的支持下,也衍生出了线上盲盒小程序,实现了线上线下双发展的态势。 盲盒小程序作为一种新的盲盒购物方式,受到了盲盒消费者的喜爱,为盲盒行业的…...
stm32学习-流水灯
接线 注意:LED灯长一点的引脚是正极。 配置GPIO 1.使用RCC开启GPIO时钟 void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); void RCC_APB1Perip…...
GIGE 协议摘录
系列文章目录 GIGE 学习笔记 GIGE 协议摘录 文章目录 系列文章目录引言第 1 章 设备发现1.1 链路选择1.1.1 单链路配置1.1.2 多链路配置1.1.3 链路聚合组配置 LAG 1.2 IP配置1.2.1 协议选择1.2.2 静态IP1.2.3 DHCP1.2.4 链接本地地址 LLA 1.3 设备枚举1.3.1 GVCP设备发现广播设…...
服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程
服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程。 一、问题概述 服务器远程桌面无法连接是日常运维中常见的问题之一。它可能由多种原因造成,如网络问题、服务器配置错误、远程桌面服务未启动等。本教程将指导您逐步排查并解决这些问题。…...
【机器学习300问】105、计算机视觉(CV)领域有哪些子任务?
计算机视觉作为人工智能的重要分支,发展至今已经在诸多领域取得显著的成果。在众多的计算机视觉任务中,图像分类、目标检测与定位、语义分割和实例分割是四个基本而关键的子任务,它们在不同的应用场景下扮演着重要角色。这四个子任务虽然各具…...
安卓手机APP开发__超宽带(UWB)通信
安卓手机APP开发__超宽带(UWB)通信 目录 概述 控制方/发起方与控制方/响应方 参数范围 后台测距 STS 配置 步骤 使用限制 代码示例 示例应用 UWB 范围 RxJava3 支持 生态系统支持 支持 UWB 的移动设备 第三方 SDK 概述 注意 :UWB 目前仅支持 Jetpac…...
儿童股骨干骨折用儿童悬吊如何进行康复
儿童股骨干骨折后的悬吊康复训练,应根据骨折的具体情况和儿童的年龄来制定个性化的康复计划。悬吊康复训练主要目的是通过减轻骨折部位的压力,促进骨折愈合,同时保持和增强儿童的肌肉力量和关节活动能力。 悬吊康复训练的方法 1.垂直悬吊皮牵…...
vscode plantuml插件安装使用(windows)
1、安装JDK,网址 https://www.oracle.com/java/technologies/,添加系统变量JAVA_HOME 2、安装graphviz,网址 Download | Graphviz, 并添加用户变量GRAPHVIZ_DOT 3、vscode安装插件plantuml 4、新增wsd文件,按照使用…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
