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、要将不同的操作封装起来,单独设计成为一个类,为了规范实现,需要…

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

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

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

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

IFC文件分析工具Top 5

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

python开发poc2,爆破脚本

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

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

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:设计模式深度解析:AI大模型下…

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

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

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

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

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

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

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

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

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

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

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

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

数据库相关知识总结

一、数据库三级模式 三个抽象层次: 1. 视图层:最高层次的抽象,描述整个数据库的某个部分的数据 2. 逻辑层:描述数据库中存储的数据以及这些数据存在的关联 3. 物理层:最低层次的抽象,描述数据在存储器中时如…

五一假期来临,各地景区云旅游、慢直播方案设计与平台搭建

一、行业背景 经文化和旅游部数据中心测算,今年清明节假期3天全国国内旅游出游1.19亿人次,按可比口径较2019年同期增长11.5%;国内游客出游花费539.5亿元,较2019年同期增长12.7%。踏青赏花和户外徒步成为假期的热门出游主题。随着…

Taro打包生成不同目录

使用taro init创建taro项目时,taro默认打包目录是: /config/index.js outputRoot:dist默认的目录,编译不同平台代码时就会覆盖掉,为了达到多端同步调试的目的,这时需要修改默认生成目录了,通过查看官方文…

【LeetCode】排序数组——不一样的方式实现快排

目录 题目链接 颜色分类 算法原理 代码实现 排序数组 算法原理 代码实现 最小的k个数 算法原理 代码实现 题目链接 LeetCode链接:75. 颜色分类 - 力扣(LeetCode) LeetCode链接:912. 排序数组 - 力扣(L…

docker 部署 Epusdt - 独角数卡 dujiaoka 的 usdt 支付插件

部署 部署说明 部署之前必须注意的几点事项,该教程不一定适合所有用户: 本教程主要是使用 docker 部署,宝塔用户或宿主机直接安装的用户请直接参考官网教程.本教程是独立部署 epusdt,使用独立的mysql和redis,与dujiaoka项目分开. 在研究的过程中发现 epusdt 也需要用到 mys…

CADP加密系统的可扩展性和可定制性

CADP加密系统是一种专门用于保护CAD(计算机辅助设计)文件安全的加密解决方案。随着CAD技术在各个领域的广泛应用,CAD文件的安全性和保密性日益受到重视。CADP加密系统通过一系列先进的加密技术和安全措施,为CAD文件提供全面的保护,防止未经授…

ES入门十五:分页的三驾马车【from+size、search after、scroll api】

从数据集中获取数据时分页是绕不开的操作,一下子从数据集中获取过多的数据可能会造成系统抖动、占用带宽等问题。特别是进行全文搜索时,用户只关心相关性最高的那个几个结果,从系统中拉取过多的数据等于浪费资源。 ES提供了3种分页方式&…

Java | Leetcode Java题解之第15题三数之和

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> threeSum(int[] nums) {int n nums.length;Arrays.sort(nums);List<List<Integer>> ans new ArrayList<List<Integer>>();// 枚举 afor (int first 0;…