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;

    }



    @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"));

    }

}

运行结果: 

 结语 

对命运承诺

对承诺负责

!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

elementUI的搭建使用过程

Element - The worlds most popular Vue UI framework 上面是elementUI的网站,进入网站 点击右上角的组件按钮 复制这段代码到你的项目终端:npm i element-ui -S 加载完成后即可使用elementUI网站中的组件,使用它们只需要复制组件下面的代码即可

Qt自定义信号

1.Teacher类下定义信号signals: Student类下定义槽函数&#xff1a; Teacher.h #pragma once#include <QObject>class Teacher : public QObject {Q_OBJECTpublic:Teacher(QObject *parent);~Teacher(); signals:void Ask(); //老师向学生提问void Ask(QString str);…

第3章_UART 开发基础

文章目录 第3章 UART 开发基础3.1 同步传输与异步传输3.1.1 概念与示例3.1.2 差别 3.2 UART 协议与操作方法3.2.1 UART 协议3.2.2 STM32H5 UART 硬件结构3.2.3 RS485 协议 3.3 UART 编程3.3.1 硬件连接3.3.2 三种编程方式3.3.3 查询方式3.3.4 中断方式3.3.5 DMA 方式 3.4 效率最…

「C++系列」C++简介、应用领域

文章目录 一、C简介C 的主要特点&#xff1a;C 的学习建议&#xff1a; 二、C 应用领域三、C 有哪些优势四、C 初学案例1. Hello, World!2. 两数求和3. 判断奇偶4. 判断闰年5. 判断质数6. 求阶乘7. 斐波那契数列8. 延时程序&#xff08;简单示例&#xff09; 五、相关链接 一、…

vue组件全局注册

描述&#xff1a; vue组件的注册分为局部和全局注册两部分&#xff0c;局部注册相对容易&#xff0c;不做赘述&#xff1b;而不同框架的注册方法又有所不同&#xff0c;下面针对vite框架和vue-cli框架的注册分别进行说明 vue组件全局注册 一、vite框架中全局组件注册二、Vue-cl…

点云入门知识

点云的处理任务 场景语义分割 物体的三维表达方法&#xff08;3D representations&#xff09;&#xff1a; 点云&#xff1a;是由物体表面上许多点数据来表征这个物体。最接近原始传感器数据&#xff0c;且具有丰富的几何信息。 Mesh&#xff1a;用三角形面片和正方形面片拼…

计算机语言vs指令vs中央处理器cpu

计算机中如何表示数据 在计算机中&#xff0c;所有数据和指令都是用二进制表示的&#xff0c;即0和1。这些0和1实际上是电压信号的高低电平&#xff0c;0通常表示低电平&#xff08;如0伏特&#xff09;&#xff0c;1表示高电平&#xff08;如5伏特&#xff09;。 指令系统&a…

食品行业怎么用JSON群发短信

食品作为日常生活不可缺少的元素&#xff0c;市场需求是很稳定的&#xff0c;但是份额就那么多&#xff0c;商家都要来抢占的话&#xff0c;就需要运营推广各凭本事&#xff0c;市场运营中选择合适的推广方式&#xff0c;可以增加店铺销售额&#xff0c;很多实体店或商城都会建…

LLM应用开发-RAG系统评估与优化

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;在上一篇文章中&#xff0c;我们学习了如何基于LangChain构建RAG应用&#xff0c;并且通过Streamlit将这个RAG应用部署到了阿里云服务器&#xff1b;&am…

expandtabs()方法——tab符号转为空格

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 expandtabs()方法把字符串中的tab&#xff08;\t&#xff09;符号转为空格&#xff0c;tab&#xff08;\t&#xff09;符号默认的空格数是…

软考初级网络管理员__操作系统单选题

1.在Windows资源管理器中&#xff0c;假设已经选定文件&#xff0c;以下关于“复制”操作的叙述中&#xff0c;正确的有()。 按住Ctr键&#xff0c;拖至不同驱动器的图标上 按住AIt键&#xff0c;拖至不同驱动器的图标上 直接拖至不同驱动器的图标上 按住Shift键&#xff0…

普元EOS学习笔记-EOS8.3精简版安装

前言 普元EOS是优秀的高低开结合的企业应用软件开发框架。 普元&#xff1a;这是普元公司的名字&#xff0c;普元信息&#xff0c;上市公司哦&#xff0c;这里就不过多安利了。 EOS&#xff1a;普元公司的企业应用开发系统&#xff0c;开发语言是基于Java&#xff0c;技术框…

LLDP 基本原理

LLDP 简介 定义 LLDP&#xff08;Link Layer Discovery Protocol&#xff0c;链路层发现协议&#xff09;是 IEEE 802.1ab 中定义的第二层发现&#xff08;Layer 2 Discovery&#xff09;协议。 LLDP 提供了一种标准的链路层发现方式&#xff0c;可以将本端设备的主要能力、…

【51单片机入门】数码管原理

文章目录 前言共阴极与共阳极数码管多个数码管显示原理 总结 前言 在我们的日常生活中&#xff0c;数码管被广泛应用于各种电子设备中&#xff0c;如电子表、计时器、电子钟等。数码管的主要功能是显示数字和一些特殊字符。在这篇文章中&#xff0c;我们将探讨数码管的工作原理…

【详细】CNN中的卷积计算是什么-实例讲解

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、 CNN的基础卷积计算1.1.一个例子了解CNN的卷积计算是什么1.2.卷积层的生物意义 二、卷积的拓展&#xff1a;多输入通道与多输出通道2.1.多输入通道卷积2.2.多输出通道卷积 三、卷积的实现3.1.pytorch实现卷积…

助农扶贫网站

摘要&#xff1a;随着信息科技的快速发展和互联网的普及&#xff0c;信息技术在助力农业发展、促进农村振兴以及扶贫工作中发挥着越来越重要的作用。本文基于Spring Boot框架和Vue.js前端开发技术&#xff0c;设计完成了一个助农扶贫电商网站。网站提供便捷的农产品信息发布、农…

【验收支撑】项目验收计划书(Word原件)

软件验收相关的文档通常包括以下&#xff0c;这些文档在软件项目的不同阶段和验收过程中起着关键作用&#xff1a; 1、概要设计说明书&#xff1a; 描述了软件系统的整体架构、主要模块及其相互关系。 2、详细设计说明书&#xff1a; 提供了软件系统中各个模块的详细设计信息&a…

确保家电安全无忧:可燃气体报警器检验的重要性与必要性

随着家电行业的快速发展&#xff0c;安全问题已成为消费者关注的焦点。 可燃气体报警器作为一种重要的安全装置&#xff0c;在保障家庭安全中扮演着至关重要的角色。它能够实时监测室内可燃气体浓度&#xff0c;一旦超过预设的安全阈值&#xff0c;便会发出警报&#xff0c;提…

【Linux】服务器被work32病毒入侵CPU占用99%

文章目录 一、问题发现二、问题解决2.1 清楚病毒2.2 开启防火墙2.3 修改SSH端口2.4 仅使用凭据登录&#xff08;可选&#xff09; 一、问题发现 我的一台海外服务器&#xff0c;一直只运行一项服务&#xff08;你懂的&#xff09;&#xff0c;但是前不久我发现CPU占用99%。没在…

simulink开发stm32,使用中断模块,无法产生中断,其中包括使用timer模块,以及ADC都无法产生中断,需要注意的地方

1&#xff0c;其中包括使用timer模块&#xff0c;以及ADC都无法产生中断&#xff0c;需要注意的地方 原来是需要在配置文件里开启一下timer的中断&#xff0c;其他模块自动加载ioc就可以了&#xff0c;这个timer需要注意力&#xff0c;需要自己勾选一下 如下图&#xff1a; 看…