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

第一题

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.mzph.cn/news/799343.shtml

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

相关文章

开启Java之旅——用Java实现简易的图书管理系统(24.4.7)

图书管理系统 一、设计思路 1、首先需要区分两类人,图书管理员和借书用户,不同的用户要展现不同的界面,利用继承和多态可以将其实现。 2、要将不同的操作封装起来,单独设计成为一个类,为了规范实现,需要…

gcc/g++:预编译阶段取消宏定义

预编译阶段取消宏定义,可分为两种情况:1)内部取消,2)外部取消。 示例: 1)用户程序 /*brief test demo-for-precompile-to-undef? show you hereauthor wenxuanpeiemail 15873152445163.com(q…

synchronized-锁优化

自旋锁 自旋锁是一种基于忙等待的同步机制,用于保护临界区代码的并发访问。与互斥锁相比,自旋锁尝试通过忙等待来避免线程的切换和阻塞,从而减少开销。 自旋锁的定义:自旋锁是一种基于忙等待的同步机制,在线程无法获…

蓝桥杯 第 9 场 小白入门赛 字符迁移

题目&#xff1a; 3.字符迁移【算法赛】 - 蓝桥云课 (lanqiao.cn) 思路&#xff1a; 此题通过把小写字母映射成数字&#xff0c;进行差分即可。 AC代码&#xff1a; #include<iostream> #include<cstring> #include<algorithm>using namespace std;typed…

LeetCode-33. 搜索旋转排序数组【数组 二分查找】

LeetCode-33. 搜索旋转排序数组【数组 二分查找】 题目描述&#xff1a;解题思路一&#xff1a;二分查找。1.找哨兵节点&#xff08;nums[0]或nums[-1]&#xff09;可以确定nums[mid]位于前一段或后一段有序数组中。2. 就是边界left和right的变换&#xff0c;具体看代码。解题思…

基于SpringBoot的“民宿管理平台系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“民宿管理平台系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 用户首页界面图 民宿信息管理界面图 房间预订…

IFC文件分析工具Top 5

分析行业基础类 (IFC) 文件是确保建筑信息模型 (BIM) 数据准确性和一致性的关键步骤。 在验证这些文件期间需要考虑各个方面&#xff0c;以避免错误并确保项目的最佳运行。 在本文中&#xff0c;我们将介绍验证 IFC 文件的五种有效方法&#xff0c;帮助你对 IFC 文件的质量充…

python开发poc2,爆破脚本

#本课知识点和目的&#xff1a; ---协议模块使用&#xff0c;Request 爬虫技术&#xff0c;简易多线程技术&#xff0c;编码技术&#xff0c;Bypass 后门技术 下载ftp服务器模拟器 https://lcba.lanzouy.com/iAMePxl378h 随便创建一个账户&#xff0c;然后登录进去把ip改成…

AI大模型下的策略模式与模板方法模式对比解析

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#xff1a;设计模式深度解析&#xff1a;AI大模型下…

3D目标检测跟踪 | 基于kitti+waymo数据集的自动驾驶场景的3D目标检测+跟踪渲染可视化

项目应用场景 面向自动驾驶场景的 3D 目标检测目标跟踪&#xff0c;基于kittiwaymo数据集的自动驾驶场景的3D目标检测跟踪渲染可视化查看。 项目效果 项目细节 > 具体参见项目 README.md (1) Kitti detection 数据集结构 # For Kitti Detection Dataset └── k…

4.7总结(内部类,JDBC API || 离散化,树状数组)

JAVA学习小结 一.内部类 基础概念&#xff0c;用途和访问特点 什么是内部类&#xff1a;写在一个类中的另一个类称之为内部类&#xff1b; 内部类的用途&#xff1a;用于封装那些单独存在时没有意义&#xff0c;且是外部类的一部分的类&#xff08;汽车发动机&#xff0c;人…

记录CodeMirror一些常用的配置选项

mode&#xff1a;设置编辑器的语言模式&#xff0c;例如JavaScript、HTML、CSS、Markdown等。theme&#xff1a;设置编辑器的主题&#xff0c;例如ambiance、eclipse、monokai等。lineNumbers&#xff1a;设置是否显示行号。readOnly&#xff1a;设置是否只读。gutters&#xf…

【MySQL探索之旅】数据库设计以及聚合查询

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

golang - 简单实现linux上的which命令

本文提供了在环境变量$PATH设置的目录里查找符合条件的文件的方法。 实现函数 import ("fmt""os""path""strings" )// 实现 unix whtich 命令功能 func Which(cmd string) (filepath string, err error) {// 获得当前PATH环境变量en…

Django之静态文件及模板语法(上)

Python学习之路系列文章目录 python面向对象之警察与匪徒火拼场景模拟python面向对像之第二次笔记Django环境搭建及测试第1个Django应用及Django的请求处理Django之静态文件及模板语法&#xff08;上&#xff09; 静态文件及模板语法 Python学习之路系列文章目录一、静态文件1.…

java面试题(5)|Java 中 throw 与 throws 的区别是什么?

在Java中&#xff0c;throw和throws是两个关键字&#xff0c;它们用于异常处理&#xff0c;但在语法和作用上有所不同&#xff1a; throw&#xff1a; throw 关键字用于在代码块中抛出一个异常对象。当某个条件发生时&#xff0c;你可以使用 throw 关键字手动抛出一个异常&am…

【面经】2024春招-软件开发工程师-后端方向1

面经整理系列&#xff1a; 【面经】软件开发工程师-后端方向1 文章目录 岗位与面经基础1&#xff1a;数据库 & 网络基础2&#xff1a;系统 & 语法模板3&#xff1a;算法 & 项目 岗位与面经 岗位介绍 JD: 美团-软件开发工程师-后端方向-1小时左右 金融服务平台 技…

SQLite 4.9的虚拟表机制(十四)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite 4.9的 OS 接口或“VFS”&#xff08;十三&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 1. 引言 虚拟表是向打开的 SQLite 数据库连接注册的对象。从SQL语句的角度来看&#xff0c; 虚拟表对象与任何其他…

【uniapp小程序-跳转另一个小程序】

https://blog.csdn.net/m0_61702149/article/details/126145953 不传参的情况写法&#xff0c;上面的链接包含传参的写法 在当前小程序在pages.json写上 要跳转的小程序的id "navigateToMiniProgramAppIdList":["要跳转的小程序的appid"] 小程序A到B&#…

软考高级:计算机网络概述

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…