JAVA期末速成库(10)第十一章

一、习题介绍

Check Point:P416 11.1,11.6,11.7,11.8,11.12,11.17,11.24

Programming Exercise:11.1

二、习题及答案

Check Point:

11.1

True or false? A subclass is a subset of a superclass.

11.1 对还是错?子类是超类的子集。

答:错误。子类是超类的一个特定类型,但它不表示子类是超类的一个子集。子类继承了超类的属性和方法,但子类可以有自己的特定属性和方法。

11.6 True or false? When invoking a constructor from a subclass, its superclass’s no-arg constructor is always invoked.

11.6 对还是错?从子类调用构造函数时,总是调用父类的无参数构造函数。

答:错误。子类构造函数可以通过 super() 显式调用父类的构造函数,可以是带参数的,也可以是无参数的。如果子类构造函数中没有显式调用父类构造函数,Java编译器会自动插入一个无参数的 super() 调用。

11.7 True or false? You can override a private method defined in a superclass.

11.7 对还是错?您可以覆盖在超类中定义的私有方法。

答:错误。私有方法不能被子类覆盖,因为它们在子类中不可见。

11.8 True or false? You can override a static method defined in a superclass.

11.8 对还是错?您可以覆盖在超类中定义的静态方法。

答:错误。静态方法是与类相关联的,而不是与类的实例相关联的,因此它们不能被子类覆盖。但是,子类可以隐藏父类的静态方法。

11.12 Explain the difference between method overloading and method overriding.

11.12 解释方法重载和方法重写的区别。

答:方法重载(Overloading)发生在同一个类中,当有多个方法具有相同的名称但不同的参数列表时。编译器根据方法调用时提供的参数来决定调用哪个方法。 方法重写(Overriding)发生在继承体系中,当子类有一个与父类中具有相同名称、相同参数列表和相同返回类型的方法时。运行时,调用将基于对象的实际类型来解析。

11.17 What is polymorphism? What is dynamic binding?

11.17 什么是多态性?什么是动态绑定?

答:多态性是面向对象编程的一个特性,它允许不同类的对象对同一消息做出响应,但响应的方式取决于对象的实际类型。这使得代码可以对不同类型的对象执行不同的操作,而不需要知道对象的具体类。 动态绑定,也称为晚期绑定,是指在程序运行时确定方法调用的确切版本的过程。这是多态性的关键部分,允许Java虚拟机在运行时选择正确的方法实现。

11.24

Indicate true or false for the following statements:

■ You can always successfully cast an instance of a subclass to a superclass.

■ You can always successfully cast an instance of a superclass to a subclass.

11.24 为下列语句指明真或假:

您总是可以成功地将子类的实例强制转换为超类。真。

你总是可以成功地将父类的实例强制转换为子类。假。这可能会导致 ClassCastException ,因为父类实例不一定是子类类型。

Programming Exercise:

11.1

(The Triangle class) Design a class named Triangle that extends

GeometricObject. The class contains:

■ Three double data fields named side1, side2, and side3 with default values 1.0 to denote three sides of the triangle.

■ A no-arg constructor that creates a default triangle.

■ A constructor that creates a triangle with the specified side1, side2, and side3.

■ The accessor methods for all three data fields.

■ A method named getArea() that returns the area of this triangle.

■ A method named getPerimeter() that returns the perimeter of this triangle.

■ A method named toString() that returns a string description for the triangle.

For the formula to compute the area of a triangle, see Programming Exercise 2.19.

The toString() method is implemented as follows:

return "Triangle: side1 = " + side1 + " side2 = " + side2 + " side3 = " + side3;

Draw the UML diagrams for the classes Triangle and GeometricObject and implement the classes. Write a test program that prompts the user to enter three sides of the triangle, a color, and a Boolean value to indicate whether the triangle is filled. The program should create a Triangle object with these sides and set the color and filled properties using the input. The program should display the area, perimeter, color, and true or false to indicate whether it is filled or not.

11.1设计一个名为Triangle的类来扩展GeometricObject。这个类包含:

三个双数据字段,默认命名为side1, side2和side3值1.0表示三角形的三条边。

一个无参数构造函数,创建一个默认三角形。

创建一个具有指定的边1、边2和边的三角形的构造函数side3。

■三个数据字段的访问方法。

一个名为getArea()的方法返回三角形的面积。

一个名为getPerimeter()的方法返回三角形的周长。

一个名为toString()的方法,返回三角形的字符串描述。

计算三角形面积的公式请参见编程练习2.19。

toString()方法的实现如下:

返回"三角形:side1 = " + side1 + " side2 = " + side2 + "" Side3 = " + Side3;

为类Triangle和GeometricObject和绘制UML图实现类。

编写一个测试程序,提示用户输入三角形的边长、颜色和布尔值,以指示三角形是否是填满。程序应该用这些边创建一个三角形对象,并设置使用输入的颜色和填充属性。

程序应该显示面积、周长、颜色和true或false表示是否填充。

// 假设GeometricObject类已经存在,并且具有color和filled属性public abstract class GeometricObject {protected String color;protected boolean filled;public GeometricObject() {}public GeometricObject(String color, boolean filled) {this.color = color;this.filled = filled;}public String getColor() {return color;}public boolean isFilled() {return filled;}public abstract double getArea();public abstract double getPerimeter();}public class Triangle extends GeometricObject {private double side1;private double side2;private double side3;public Triangle() {this(1.0, 1.0, 1.0);}public Triangle(double side1, double side2, double side3) {super(); // 调用GeometricObject的无参数构造函数this.side1 = side1;this.side2 = side2;this.side3 = side3;}public double getSide1() {return side1;}public double getSide2() {return side2;}public double getSide3() {return side3;}public double getArea() {// 使用海伦公式或其他公式计算面积// 示例公式:area = sqrt(s * (s - a) * (s - b) * (s - c))// 其中s是半周长double s = (side1 + side2 + side3) / 2;return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));}public double getPerimeter() {return side1 + side2 + side3;}@Overridepublic String toString() {return "Triangle: side1 = " + side1 + ", side2 = " + side2 + ", side3 = " + side3;}}// 测试程序import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("Enter the lengths of the sides of the triangle:");double side1 = scanner.nextDouble();double side2 = scanner.nextDouble();double side3 = scanner.nextDouble();System.out.println("Enter the color of the triangle:");String color = scanner.next();System.out.println("Is the triangle filled? (true/false)");boolean filled = scanner.nextBoolean();Triangle triangle = new Triangle(side1, side2, side3);triangle.setColor(color);triangle.setFilled(filled);System.out.println("Area of the triangle: " + triangle.getArea());System.out.println("Perimeter of the triangle: " + triangle.getPerimeter());System.out.println("Color of the triangle: " + triangle.getColor());System.out.println("Filled: " + (triangle.isFilled() ? "true" : "false"));}}

运行结果: 

 结语 

对命运承诺

对承诺负责

!!!

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

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

相关文章

力扣爆刷第156天之TOP100五连刷46-50(字符串转整数、括号生成、两数相加)

力扣爆刷第156天之TOP100五连刷46-50(字符串转整数、括号生成、两数相加) 文章目录 力扣爆刷第156天之TOP100五连刷46-50(字符串转整数、括号生成、两数相加)一、8. 字符串转换整数 (atoi)二、22. 括号生成三、70. 爬楼梯四、2. 两…

CST--如何在PCB三维模型中自由创建离散端口

在使用CST电磁仿真软件进行PCB的三维建模时,经常会遇到不能自动创建离散端口的问题,原因有很多,比如:缺少元器件封装、开路端口、多端子模型等等,这个时候,很多人会选择手动进行端口创建,但是&a…

【redis】Redis AOF

1、AOF的基本概念 AOF持久化方式是通过保存Redis所执行的写命令来记录数据库状态的。AOF以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录)。AOF文件是一个只追加的文件&…

已解决javax.security.auth.login.LoginException:登录失败的正确解决方法,亲测有效!!!

已解决javax.security.auth.login.LoginException:登录失败的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查用户名和密码 用户名和密码验证 2. 验证配置文件 …

使用System.getProperty获取系统属性

使用System.getProperty获取系统属性 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Java中如何使用System.getProperty方法获取系统属性&…

Spark基于DPU的Native引擎算子卸载方案

1.背景介绍 Apache Spark(以下简称Spark)是一个开源的分布式计算框架,由UC Berkeley AMP Lab开发,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习&a…

昇思25天学习打卡营第5天|MindSpore-ResNet50图像分类

MindSpore-ResNet50图像分类 CIFAR-10数据集 CIFAR-10数据集是一个广泛使用的图像分类数据集,它包含了60,000张32x32的RGB彩色图像,分为10个类别,每个类别有6,000张图像。这些类别包括飞机(airplane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog…

Echarts地图实现:山东省报考人数

Echarts地图实现:山东省报考人数 效果预览 设计思路 数据可视化:选择地图作为数据展示的方式,可以直观地展示山东省不同城市的报考人数分布。交互性:通过ECharts的交互功能,如提示框(tooltip)…

《晨集》开源软件平台的创新与发展

一、引言 在数字化浪潮的推动下,开源软件平台已成为推动软件创新、促进知识共享的重要力量。《晨集》作为新兴的开源软件平台,其上线标志着开源生态圈的又一重要里程碑。本文旨在探讨《晨集》开源软件平台的创新特点、对开发者社区的影响以及未来发展趋…

SQL | 主键(Primary Key)和外键(Foreign Key)有什么区别| 用一个简单例子说明

如是我闻: 主键(Primary Key)和外键(Foreign Key)是确保数据完整性的两个基本概念,下面我们尝试用一个形象的例子来理解这两个概念。 基本定义 主键(Primary Key) 一个主键是一个…

JavaWeb系列十七: jQuery选择器 上

jQuery选择器 jQuery基本选择器jquery层次选择器基础过滤选择器内容过滤选择器可见度过滤选择器 选择器是jQuery的核心, 在jQuery中, 对事件处理, 遍历 DOM和Ajax 操作都依赖于选择器jQuery选择器的优点 $(“#id”) 等价于 document.getElementById(“id”);$(“tagName”) 等价…

CMMI认证等级是如何划分的?

CMMI(Capability Maturity Model Integration)认证等级是根据组织在软件开发和维护过程中的成熟度水平进行划分的。它一共包含五个级别,每个级别都代表了不同的过程成熟度和组织能力。以下是CMMI认证等级的详细划分: 初始级&…

Linux 日志文件

Linux 日志文件 在 Linux 系统中,日志文件是记录系统和应用程序运行状态、错误信息、用户活动等重要数据的文件。通过分析日志文件,管理员可以监控系统的健康状况、诊断问题、追踪安全事件以及了解系统的使用模式。 常见的 Linux 日志文件 /var/log/mes…

Java中double类型数据进行运算的时候出现精度丢失问题

精度丢失通常发生在浮点数运算中。以下是几个常见的例子展示了浮点数精度丢失的现象: 示例 1: 简单加减法中的精度丢失 在某些情况下,浮点数的简单加减法会产生意想不到的结果。 public class PrecisionLossExample {public static void main(String…

【数据可视化技术】1、如何使用Matplotlib和Seaborn库在Python中绘制热力图

热力图是一种数据可视化技术,可以显示变量之间的相关性。这个代码段是数据分析和可视化的常用方法,特别适合于展示变量之间的相关性,对于数据科学和机器学习项目非常有帮助。 1、 导入必要的库 首先,确保你已经安装了matplotlib…

收银系统源码-千呼新零售【分销商城】

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

水位自动监测摄像机

随着科技的不断进步,水位自动监测摄像机作为现代智能监控技术的重要应用,正在广泛应用于水利工程、防洪管理和环境监测等领域,显著提升了监测效率和数据准确性。水位自动监测摄像机利用高精度摄像头和先进的图像处理技术,能够实时…

鸿蒙系统——强大的分布式系统

鸿蒙相比较于传统安卓最最最主要的优势是微内核分布式操作系统,具有面向未来,跨设备无缝协作,数据共享的全场景体验。下面简单来感受一下鸿蒙系统的多端自由流转。 自由流转概述 场景介绍 随着全场景多设备的生活方式不断深入,…

Python处理word的常用操作详解

Python 处理 Word 文档通常使用 python-docx 库。以下是一些常用的操作和相应的代码示例: 这些是使用 python-docx 库处理 Word 文档时的一些常用操作。根据你的具体需求,可能还需要探索更多的功能和方法。在使用这些功能之前,请确保已经安装…

解释什么是lambda函数?它有什么好处?

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…