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

news2024/11/26 16:32:43

一、习题介绍

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;

    }



    @Override

    public 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.coloradmin.cn/o/1875205.html

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

相关文章

Windows下activemq集群配置(broker-network)

1.activemq版本信息 activemq:apache-activemq-5.18.4 2.activemq架构 3.activemq集群配置 activemq集群配置基于Networks of Brokers 这种HA方案的优点:是占用的节点数更少(只需要2个节点),而且2个broker都可以响应消息的接收与发送。不足&#xff…

003-GeoGebra如何无缝嵌入到PPT里

GeoGebra无缝嵌入到PPT里真是一个头疼的问题,已成功解决,这里记录一下,希望可以帮助到更多人。 注意,后续所有的文章说的PPT都是Offce Power Point, 不要拿着WPS的bug来问我哦,我已经戒WPS了(此处表示无奈&…

基于Spring Boot的校园失物招领系统

1 项目介绍 1.1 研究的背景及意义 在网络时代飞速发展的今天,随着网络技术日臻完善,我们的生活方式正经历深刻变革。在物质追求日益增长的同时,提升个人精神境界也成为了现代人的共同向往,而阅读则是滋养心灵、丰富精神世界的重…

Ubuntu Server 和 Ubuntu Desktop 组合使用

1.常见的组合使用方式 Ubuntu Server 和 Ubuntu Desktop 确实可以组合使用,但具体要看你的需求和使用场景。以下是一些常见的组合使用方式: 单一设备上安装:你可以在一台设备上同时安装 Ubuntu Server 和 Ubuntu Desktop。这样,你…

【SQL Server数据库】视图的使用

一、用SQL语句完成下列功能。 1.建立一视图View_CSTeacher,列出计算机系各个老师的资料(姓名、性别、职称)。 create view View_CSTeacher asselect Teac_name, Teac_sex, TechPostfrom Teacherwhere Depar_id in (select Depar_id from Deparment whe…

SpringCloudAlibaba基础四 微服务调用组件OpenFeign

JAVA 项目中如何实现接口调用? 1)Httpclient HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 …

无人机飞行操作技巧

要想充分利用无人机,掌握其操作技巧非常关键。以下是一些基础而重要的无人机操作技巧,可以帮助你更安全、更有效地使用无人机。 扫描式拍摄:这种方法涉及慢慢地将无人机从一个点移动到另一个点,同时保持相机对准一个特定的主题。…

Kafka 位移

Consumer位移管理机制 将Consumer的位移数据作为一条条普通的Kafka消息,提交到__consumer_offsets中。可以这么说,__consumer_offsets的主要作用是保存Kafka消费者的位移信息。使用Kafka主题来保存位移。 消息格式 位移主题就是普通的Kafka主题。也是…

windows MSVC编译安装libcurl

$ git clone https://github.com/curl/curl.git $ cd curl/winbuild依照curl/winbuild/README.md的指示, 启动visual studio的命令行工具,这里要注意别选错. 如果要编译出x64版本的libcurl,就用x64的命令行工具;如果要编译出x86…

VSCode插件开发经验小结

从零基础接手DX扩展开发维护,到完成DX扩展从O2平台迁移到 VSCode 平台,现在也积累了一些经验,本文将对这一过程中的学习经历做一个简单小结,也希望可以通过本文帮助想要开发 VSCode 扩展的同学可以更快速的上手。 VSCode (Visual …

福昕阅读器再打开PDF文件时,总是单页显示,如何设置打开后就自动显示单页连续的模式呢

希望默认进入连续模式 设置方法 参考链接 如何设置使福昕阅读器每次启动时不是阅读模式 每次启动后都要退出阅读模式 麻烦_百度知道 (baidu.com)https://zhidao.baidu.com/question/346796551.html#:~:text%E5%9C%A8%E3%80%90%E5%B7%A5%E5%85%B7%E3%80%91%E9%87%8C%E6%9C%89%E…

使用ROS2的RCLCPP客户端库来实现话题通信

1.创建发布者目录文件 cd d2lros2/ mkdir -p chapt3/chapt3_ws/src cd chapt3/chapt3_ws/src 2.创建发布者节点 ros2 pkg create example_topic_rclcpp --build-type ament_cmake --dependencies rclcpp 3.新建发布者类 touch example_topic_rclcpp/src/topic_publisher_01.…

[CAN] Intel 格式与 Motorola 格式的区别

编码格式 数据传输规则一、Intel 格式编码二、Motorola 格式编码三、分析总结🙋 前言 CAN 总线信号的编码格式有两种定义:Intel 格式与 Motorola 格式。究竟两种编码格式有什么样的区别呢?设计者、dbc 文件编辑者或者测试人员又该如何判断两种格式,并进行有效正确的配置和解…

下载旧版本vscode及扩展,离线下载远程linux服务器插件

背景 工作的内网没有网络,无法使用网络来下载插件和vscode软件,且有远程linux服务器需求,linux服务器中lib相关库比较旧且无法更新,所以需要选择一个旧版本的vscode,相应插件也需要选择旧版本的 旧版本vscode下载 没…

SQL 29 计算用户的平均次日留存率题解

问题截图如下: SQL建表代码: drop table if exists user_profile; drop table if exists question_practice_detail; drop table if exists question_detail; CREATE TABLE user_profile ( id int NOT NULL, device_id int NOT NULL, gender varchar…

金融科技如何以细颗粒度服务提升用户体验与满意度

在金融科技迅速发展的当下,各种技术手段被广泛应用于提升用户体验与满意度。这些技术手段不仅提供了更为精准、个性化的服务,还通过优化操作流程、提升服务效率等方式,显著改善了用户的金融生活。以下将详细探讨金融科技如何运用这些技术手段…

短视频哪个软件好用?成都柏煜文化传媒有限公司

短视频哪个软件好用?一文带你了解各大平台特色 随着移动互联网的飞速发展,短视频已经成为现代人生活中不可或缺的一部分。市面上涌现出众多短视频平台,它们各具特色,满足了不同用户的需求。那么,短视频哪个软件好用呢…

Python学习笔记五

1.当循环执行完整后&#xff0c;就会执行else里面的代码 s0 i1 while i<100:sii1 else:print(s) 当循环不完整就会如下 s0 i1 while i<100:sii1if s6:break; else:print(s) 2. 实现密码匹配&#xff0c;可以输入三次&#xff0c;若输入三次错误会退出&#xff0c;或者输…

Linux高并发服务器开发(六)线程

文章目录 1. 前言2 线程相关操作3 线程的创建4 进程数据段共享和回收5 线程分离6 线程退出和取消7 线程属性&#xff08;了解&#xff09;8 资源竞争9 互斥锁9.1 同步与互斥9.2 互斥锁 10 死锁11 读写锁12 条件变量13 生产者消费者模型14 信号量15 哲学家就餐 1. 前言 进程是C…

vue3-openlayers 图标闪烁、icon闪烁、marker闪烁

本篇介绍一下使用vue3-openlayers 图标闪烁、icon闪烁、marker闪烁 1 需求 图标闪烁、icon闪烁、marker闪烁 2 分析 图标闪烁、icon闪烁、marker闪烁使用ol-animation-fade组件 3 实现 <template><ol-map:loadTilesWhileAnimating"true":loadTilesWh…