java理论小作业(2)--类

news2025/1/22 12:48:03

第一题

1.题目:

2.解析:

首先,我们来分析Hello1类的结构和给定代码的执行流程:

Hello1类中有两个成员变量,一个静态的a和一个非静态的b。静态变量a属于类本身,而非静态变量b属于类的每一个实例(对象)。

Hello1类的构造器对成员变量b进行了初始化,将其值设置为b+a。因为a是静态的,它的值在所有实例之间是共享的。

add方法分别将ab的值加1。

接下来,我们根据提供的代码段逐步分析:

  1. Hello1 h1=new Hello1();
    这一步创建了一个Hello1类的实例h1。在构造器中,b的值被初始化为b+a,即3+3=6。所以h1.b的值为6。静态变量a的值在构造过程中没有被改变,仍然是3。

  2. h1.add();
    调用h1对象的add方法,a的值加1变为4,h1.b的值加1变为7。

  3. Hello1 h2=new Hello1();
    这一步创建了另一个Hello1类的实例h2。在构造器中,b的值再次被初始化为b+a,但此时a的值已经是4(因为上一步h1.add()改变了a的值),所以h2.b的值为3+4=7。静态变量a的值在构造过程中依然没有被改变,仍然是4。

  4. h2.add();
    调用h2对象的add方法,a的值再加1变为5,h2.b的值加1变为8。

  5. System.out.println("h1.a="+h1.a+" h2.b="+h2.b);
    打印h1.ah2.b的值。因为a是静态的,所以所有实例共享它的值,这里h1.aHello1.a以及h2.a都是5。而h2.b的值在上一步已经被更新为8。

所以,最终的输出结果为:

h1.a=5 h2.b=8

注意:虽然代码中写的是h1.a,但实际上因为a是静态的,你也可以直接通过类名Hello1.a来访问它,结果是一样的。这里写h1.a只是表明是通过h1这个对象来访问静态变量a,但实际上访问的是类级别的变量。

3.收获:

静态变量不会变,非静态变量是每个类的对象

第二题:

1.题目:

2.解析:

在Java中,类的访问权限控制是通过修饰符来决定的。在您提供的代码中,类C有三个成员变量:

  • private int a=3;:这个变量是私有的,只能被类C自身访问。
  • double b=4.5;:这个变量没有明确的访问修饰符,因此它的访问权限是默认的(也称为包级访问权限),意味着它只能被同一个包内的其他类访问。
  • protected int c=5;:这个变量是受保护的,可以被类C自身、同一个包内的其他类以及子类(无论子类是否在同一个包内)访问。

类D和类C在同一个包(com)中,因此类D可以访问类C中具有包级访问权限的变量和受保护的变量。

基于上述分析:

  • 类D不能访问a,因为a是私有的。
  • 类D可以访问b,因为b具有包级访问权限。
  • 类D可以访问c,因为c是受保护的。

因此,正确答案是:

C. 不能访问a,可以访问b和c。

3.收获:

private让变量变为私有的

第三题:

1.题目:

2.解析:

执行以下代码:

A a1 = new B();
a1.print();

首先,A a1 = new B(); 这行代码创建了一个 B 类的实例,并将其引用赋值给了 A 类型的变量 a1。由于 B 是 A 的子类,所以这是合法的。

接下来,调用 a1.print();。这里有几个关键点需要注意:

  1. 变量 a1 的类型是 A,但是实际上它引用的是一个 B 类的对象。
  2. 在 Java 中,如果子类重写(override)了父类的方法,那么当使用子类对象调用该方法时,将执行子类中的方法实现。
  3. 在这个例子中,B 类重写了 A 类中的 print 方法。

因此,当调用 a1.print(); 时,实际执行的是 B 类中的 print 方法,而不是 A 类中的 print 方法。

B 类中的 print 方法只打印 a 的值,并没有对其进行自增操作。B 类中的 a 是 B 类自己的成员变量,其值为 5(由于 int a = 5; 在 B 类中被定义)。

所以,输出结果为:

a=5

因此,正确答案是 C. a=5

3.收获:

将子类赋值给父类

A a1 = new B()

第四题:

1.题目:

2.解析:

在Java中,当一个类继承自另一个类时,子类可以通过调用super()来调用父类的构造函数。这是子类构造函数中初始化父类部分所必需的。

在类B中,构造函数需要调用父类A的构造函数来初始化从A继承的字段ab。由于A的构造函数接受两个int类型的参数,因此需要在B的构造函数中使用super(a, b);来调用它。

接下来,子类B还需要初始化自己的字段c,这可以通过this.c = c;来完成。

因此,完整的B类构造函数应该如下所示:

class B extends A {  
    private double c;  
    public B(int a, int b, double c) {  
        super(a, b); // 调用父类A的构造函数  
        this.c = c;  // 初始化子类B的字段c  
    }  
}

 

选项A中的super.A(a,b);是不正确的,因为调用父类构造函数的正确语法是super(参数列表);,而不是super.类名(参数列表);

选项B中的A(a,b);也是不正确的,因为这不是调用父类构造函数的正确语法。而且,this.b=b;在这里是多余的,因为父类构造函数已经初始化了b

选项C也是错误的,因为它试图通过super(a);只传递一个参数给父类构造函数,而父类A的构造函数需要两个参数。此外,this.b=b;同样是多余的。

3.收获:

子类继承父类:使用super函数继承需要的属性

第五题放一放

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

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

相关文章

MySQL-5.函数

5.1 统计函数(聚合函数) # 统计数学成绩大于 90 的学生有多少个? SELECT COUNT(*) FROM student WHERE math > 90;# 求一个班级总分平均分 SELECT AVG(math english chinese) FROM student;# 统计一个班级数学总成绩 SELECT SUM(math) F…

Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理

Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理 文章目录 Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理磁盘清理工具 使用“运行”命令访问磁盘清理利用存储感知自动管理空间清理WinSxS文件夹结合手动清理策略 小结删除临时文件总结&…

JWT在单点登录系统中的应用

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许使用JWT在用户和服务器之间传递安全可靠的信息。 来假想一下一个场景。在A用户关注了B用户的时候,系统发邮件给B用户,并且附有一个链接“点此关注A用户”。链接的地址可以…

XML HTTP传输 小结

what’s XML XML 指可扩展标记语言(eXtensible Markup Language)。 XML 被设计用来传输和存储数据,不用于表现和展示数据,HTML 则用来表现数据。 XML 是独立于软件和硬件的信息传输工具。 应该掌握的基础知识 HTMLJavaScript…

Elastic:加速生成式人工智能体验

作者:Matt Riley 搜索驱动的人工智能和开发人员工具专为速度和规模而打造。 在大型语言模型(LLM)和生成式 AI 的每日突破中,开发者站在了这场运动的最前沿,影响着它的方向和可能性。在这篇博客中,我将分享…

【研发管理】产品经理知识体系-数字化战略

导读: 数字化战略对于企业的长期发展具有重要意义。实施数字化战略需要企业从多个方面进行数字化转型和优化,以提高效率和创新能力,并实现长期竞争力和增长。 目录 1、定义 2、数字化战略必要性 3、数字战略框架 4、数字化转型对产品和服务设计的影响…

chrome 浏览器 有自带的自动字幕功能,支持英文,控制您的音乐、视频等媒体内容

chrome 浏览器 有自带的自动字幕功能,支持英文,控制您的音乐、视频等媒体内容

蚁剑修改特征性信息

前言 我们首先得知道蚁剑的流量特征: 编码器和解码器的特征:蚁剑自带的编码器和解码器具有明显的特点,可以通过更改配置文件来达到流量加密的目的1。例如,蚁剑支持多种编码方式,如base64、chr、rot13等,这…

C++中的inline用法

1. 引入inline关键字的原因 在c/c中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据(也就是函数内数据&#xf…

初识Java中的NIO

1.概述 Java NIO 全称java non-blocking IO ,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出新特性,被统称为 NIO(即 New IO),是同步非阻塞的。NIO采用内存映射文件的方式来处理输入输出,NI…

【C++进阶】哈希表(哈希函数、哈希冲突、开散列、闭散列)

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:c大冒险 总有光环在陨落,总有新星在闪烁 引言: 我们之前…

CSS 学习笔记 总结

CSS 布局方式 • 表格布局 • 元素定位 • 浮动布局(注意浮动的负效应) • flex布局 • grid布局(感兴趣的可以看下菜鸟教程) 居中设置 元素水平居中 • 设置宽度后,margin设置为auto • 父容器设置text-alig…

鸿蒙原生应用已超4000个!

鸿蒙原生应用已超4000个! 来自 HarmonyOS 微博近期消息,#鸿蒙千帆起# 重大里程碑!目前已有超4000个应用加入鸿蒙生态。从今年1月18日华为宣布首批200多家应用厂商正在加速开发鸿蒙原生应用,到3月底超4000个应用,短短…

【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型

系列文章目录 【ARMv7-M】| 01——阅读笔记 | 简介|应用程序级编程和内存模型 失败了也挺可爱,成功了就超帅。 文章目录 前言1、简介2、应用程序级编程模型2.1 编程模式和访问等级2.2 数据类型和运算操作2.3 寄存器和执行状态1.2.4 异常和中断1.2.5 浮点单元寄存器…

android 资源文件混淆

AGP7.0以上引用AndResGuard有坑 记录下 在项目的build.gradle中添加如下 buildscript {ext.kotlin_version "1.4.31"repositories {google()jcenter()maven {url "https://s01.oss.sonatype.org/content/repositories/snapshots/"}}dependencies {class…

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(七)- 向量算术指令格式

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容: 这是一份关于向量扩展的详细技术文档,内容覆盖了向量指令集的多个关键方面,如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

成功案例(IF=13.263)| 基因组+重测序+GWAS揭示豇豆传播过程中基因组的变化及荚果相关性状的遗传调控关键位点

研究背景 豇豆(Vigna unguiculata (L.) Walp.),豆科的一员,是一种一年生的热带或亚热带草本植物,用于人类食物和动物饲料,作为青粪、干草或青贮饲料。有两种主要栽培亚种Vigna unguiculata ssp. sesquiped…

文档管理系统解决方案(word原件)

1.系统概述 1.1.需求描述 1.2.需求分析 1.3.重难点分析 1.4.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 数据备份技术 3.系统功能设计 3.1.功能清单列表 3.2.基础数据管理 3.3.位置管理 3.4.文档使用 3.5.文档管理 软件全套资料包获取方式①:软件项…

leetcode热题100.接雨水

Problem: 42. 接雨水 文章目录 题目思路复杂度Code 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 …

pyside6,“提升为”的部件使用困惑

在Qt designer中,新建一个QMainWindow,新建一个QWidget,并命名为widget,如图: 新建NewClass.py,输入代码: # encoding: utf-8 from PySide6.QtWidgets import QWidgetclass NewClass(QWidget):…