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,一经查实,立即删除!

相关文章

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. 验证配置文件 …

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)…

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

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

JavaWeb系列十七: jQuery选择器 上

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

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

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

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

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

水位自动监测摄像机

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

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

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

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

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

深度解密Spark性能优化之道

课程介绍 课程通过实战案例解析和性能调优技巧的讲解,帮助学员提升大数据处理系统的性能和效率。课程内容涵盖了Spark性能调优的各个方面,包括内存管理、并行度设置、数据倾斜处理、Shuffle调优、资源配置等关键技术和策略。学员将通过实际案例的演示和…

线性代数知识点搜刮

求你别考太细... 目录 异乘变零定理 行列式转置 值不变 重要关系 中间相等,取两头 特征值公式 向量正交 点积为0 拉普拉斯定理 矩阵的秩 特征值和特征向量 |A|特征值的乘积 & tr(A)特征值的和 要记要背 增广矩阵 异乘变零定理 某行(…

【面试干货】Object 类中的公共方法详解

【面试干货】Object 类中的公共方法详解 1、clone() 方法2、equals(Object obj) 方法3、hashCode() 方法4、getClass() 方法5、wait() 方法6、notify() 和 notifyAll() 方法 💖The Begin💖点点关注,收藏不迷路💖 在 Java 中&#…

报工计件工资核算h5开源版开发

报工计件工资核算h5开源版开发 小型计件工资管理系统,支持后台制定工价,核算工资。支持员工H5端报工,和查看工资情况。 H5手机端 支持在线报工,支持查看我的工资。 自定义费用项 在基础计件工资基础上增加扣除和增加项&#xff…

Spring Boot中 CommandLineRunner 与 ApplicationRunner作用、区别

CommandLineRunner 和 ApplicationRunner 是 Spring Boot 提供的两种用于在应用程序启动后执行初始化代码的机制。这两种接口允许你在 Spring 应用上下文完全启动后执行一些自定义的代码,通常用于执行一次性初始化任务,如数据库预填充、缓存预热等。 Co…

基于Vue.js的电商前端模板:Vue-Dashboard-Template的设计与实现

摘要 随着电子商务的飞速发展,前端页面的设计和实现变得愈发重要。本文介绍了一个基于Vue.js的电商前端模板——Vue-Dashboard-Template,旨在提供一个高性能、易扩展的电商平台前端解决方案。该模板遵循响应式设计、模块化、组件化开发等设计原则&#…

Python面试宝典第1题:两数之和

题目 给定一个整数数组 nums 和一个目标值 target,找出数组中和为目标值的两个数的索引。可以假设每个输入只对应唯一的答案,且同样的元素不能被重复利用。比如:给定 nums [2, 7, 11, 15] 和 target 9,返回 [0, 1],因…