【Java】类与对象(实验二)

目录

一、实验目的

二、实验内容

三、实验小结


一、实验目的

  1. 掌握类的定义与对象的创建。
  2. 理解构造方法和this关键字的用法。
  3. 掌握对象对于属性及方法的引用。

二、实验内容

1、编写一个Java程序,定义一个表示学生的类Student,该类包括:

(1)这个类的属性有:“学号”、“班号”、“姓名”、“性别”、“年龄”,每个属性的类型请参考构造方法。

(2)为每个属性编写getter和setter方法。

提示:快速添加getter和setter的方法,以ecplise为例:先在要添加的位置上右键,然后source->Generate Getter and Setter,勾选要添加getter和setter的变量然后单击OK即可。

(3)编写构造方法为属性赋值。

public Student(long studentID,int classID,String name,String sex,int age)

(4)为类Student增加一个方法public String toString(),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。

(5)编写一个Java Application程序,创建2个Student类的对象,分别用构造方法和setter方法设置设置其属性值,输出2个对象的属性值。

源代码:

 实验运行截图:

2、编写一个 Java 应用程序,该程序中有两个类:Vehicle(用于表示机动车)和 User(主类)。

具体要求如下:

Vehicle 类有一个 double 类型的变量 speed,用于表示机动车的速度,一个 int 型变量 power,用于表示机动车的功率。类中定义了 speedUp(int s)方法,体现机动车有加速功能;定义了 speedDown()方法,体现机动车有减速功能;定义了 setPower(int p)方法,用于设置机动车的功率;定义了getPower()方法,用于获取机动车的功率。机动车的 UML图如上图所示。在主类 User 的 main()方法中用 Vehicle 类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。

源代码:

 

实验运行截图:

 

3、编写一个 Java 应用程序,模拟家庭买一台电视,即家庭将电视作为自己的一个成员,即通过调用一个方法将某个电视的引用传递给自己的家庭成员。具体要求如下。

(1)有三个源文件:TV.java、Familiy.java 和 MainClass.java,其中 TV.java 中的 TV 类负

责创建“电视”对象,Family.java 中的 Family 类负责创建“家庭”对象,MainClass.java

是主类。

(2) 在主类的 main()方法中首先使用 TV 类创建一个对象 haierTV,然后使用 Familiy 类

再创建一个对象 zhangSanFamily,并将先前 TV 类的实例 haierTV 的引用传递给zhangSanFamily 对象的成员变量 homeTV。

Family 类组合 TV 类的实例的 UML 图如下图所示。

源代码:

 实验运行截图:

 4、编写程序模拟两个村庄共用同一口井水。编写一个 Village 类,该类有一个静态的 int 型成员变量 waterAmount,用于模拟井水的水量。在主类 Land 的 main()方法中创建两个村庄,一个村庄改变了 waterAmount 的值,另一个村庄查看 waterAmount 的值。

源代码:

 实验运行截图:

 

三、实验小结

1、类是组成java源文件的基本元素,一个源文件是由若干个类构成的。

2、类体中有成员变量和方法构成。成员变量分为类(static)变量和实例变量,其中类变量在程序开始运行时分配内存空间而实例变量是在创建类的对象的时候分配内存空间。方法有类(static)方法和实例方法,类方法在程序开始运行时分配内存接口地址、实例方法在创建对象时分配内存接口地址;类方法可以由类名或对象名调用、只能操作类变量或调用其它的类方法而实例方法只能由实例对象调用,可以修改类和实例变量调用其它实例和类方法。

3、通过对象名无法直接修改类变量的值但可以访问其值。

4、类变量和方法(类方法、实例方法)的内存地址被所有对象共享。而实例变量的内存地址为每个类对象独有。

5、对象内存中保存的只有实例变量数据、类(类变量和类方法)内存地址和实例方法所在内存接口的地址。所以通过对象可以操作类的实例变量和访问类变量,以及调用实例方法和类方法(*自我理解)。

6、构造方法没有返回值类型、方法名和类名相同。在实例化对象时自动调用构造方法。

7、如果一个对象(手机)中包含其它的对象(电池),则可以通过对象的组合,将另一个对象(电池)引用到当前对象(手机)的属性(成员变量)中。

8、定义类的成员中受访问权限的限制,如:private、public、protected、友好。其中private修饰的成员变量和方法,类的对象无法直接访问和调用; public修饰的成员变量和方法可以被当前或其他包中的类创建的对象直接访问和调用;默认不写即友好的和protected修饰的成员变量和方法只能被同包下类创建的对象直接访问和调用,其它包中的类创建的对象由于和当前友好成员的类不在同一个包中而无法直接访问友好或受保护的变量和调用友好或受保护的方法。Public修饰定义的类在其他包中使用import语句导入此公共类后,可以通过类名创建对象,否则其它的包导入此类后无法创建对象(不在同一个包名下)。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

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

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

相关文章

HarmonyOS—使用低代码开发应用或服务

使用低代码开发应用或服务有以下两种开发方式: 创建一个支持低代码开发的新工程,开发应用或服务的UI界面。在已有工程中,创建Visual文件来开发应用或服务的UI界面。 ArkTS工程和JS工程使用低代码的步骤相同,接下来以JS工程为例分…

VantUI组件的安装和使用

Vant UI 是一款轻量、可靠的移动端 Vue 组件库,适用于构建高性能的移动端页面。它提供了丰富的组件,如按钮、输入框、弹窗、轮播等,并且具有灵活的配置和扩展性。Vant UI 的设计风格简洁,易于上手,能够满足大部分移动端…

《Effective C++》《构造/析构/赋值运算——6、若是不想使用编译器自动生成的函数,就该明确拒绝》

文章目录 1、term6:Explicitly disallow the use of compiler-generated functions you do not want方案1:实现空的copy构造和copy赋值,并将其声明为private方案2:只做声明,不提供实现方案3:继承UnCopyable这样一个空基类,该基类将拷贝构造函…

exe4j将java项目打包为exe包(无需每台机器上安装jdk)

这里写目录标题 背景过程打jar包1、修改pom文件2、maven命令打jar包 下载exe4j工具1.首先去官网下载 exe相关配置1、填写密钥2、选择jar包格式3、设置名称以及输出exe位置4、设置图标及设置操作系统版本5、设置要导入的jar包,以及启动类6、设置jdk版本范围7、设置jd…

【2024软件测试面试必会技能】Appium自动化(6):原生app元素定位方法

元素定位方法介绍及应用: Appium方法定位原生app元素: 通过appium inspector工具,可以获取元素的相关信息;在appium中提供了一系列的元素定位API,通过在这些API中输入指定的元素信息,就能完成元素定位,定…

深入攻克并了解权限ACL

一、ACL使用 1.1、ACL中mask修改最大权限 什么是最大权限,看下面的信息: [rootlocalhost ~]# getfacl /project getfacl: Removing leading / from absolute path names # file: project # owner: root # group: tgroup user::rwx# 所属用户权限 user…

C# cass10 面积计算

运行环境Visual Studio 2022 c# cad2016 cass10 通过面积计算得到扩展数据,宗地面积 ,房屋占地面积,房屋使用面积 一、主要步骤 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象。创建一个选择过滤器,限制用户只能选择&q…

究竟做老隋分享的temu蓝海项目怎么样?这些要点要关注

近年来,跨境电商成为了一股热潮,许多企业纷纷投身其中,希望能够分得一杯羹。其中,Temu项目备受关注。本文将从可靠性角度分析Temu蓝海项目,帮助您了解其优势和潜在风险。 一、 Temu项目的背景与可靠性 Temu是由拼多多推…

Codeforces Round 494 (Div. 3)

目录 A. Polycarps Pockets B. Binary String Constructing C. Intense Heat D. Coins and Queries E. Tree Constructing F. Abbreviation A. Polycarps Pockets 记录数量可以直接开一个桶即可然后求最大值 void solve(){cin>>n;vector<int> ton(105);int …

【进程概念】

目录 什么是在计算机运行的程序这么多运行的程序计算机是如何管理的先描述再组织 什么是在计算机运行的程序 对于一个在磁盘可执行的二进制文件&#xff0c;也可叫做可执行程序。对于一个可执行的程序&#xff0c;程序有自己的代码和数据。一旦运行起来&#xff0c;就会在计算…

Linux ip route命令

理解ip route命令 ip route是Linux系统中的一个非常常用的命令&#xff0c;它用于配置和管理Linux的路由表。通过ip route命令&#xff0c;管理员可以查看、添加、删除或修改Linux系统的路由表&#xff0c;从而决定数据包如何在网络中传输。例如&#xff0c;当一台Linux机器需要…

Error: A JNI error has occurred, please check your installation and try again

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Redis服务搭建】

目录 Redis的修改配置启动以及参数调优Redis的常用基本操作Redis运维监控命令Redis的配置的动态更新和写入Redis的多用户管理Redis的慢日志Redis禁用危险命令和压测工具Redis持久化存储1.Redis的RDB持久化存储2.Redis的AOF持久化存储 Redis的主从复制redis的哨兵实现主从自动切…

基于支持向量机的航迹追踪,基于支持向量机的航迹追踪,基于SVM的航迹矫正

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于支持向量机的航迹追踪,基于支持向量机的航迹追踪,基于SVM的航迹矫正(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/downloa…

深入探索Linux:ACL权限、特殊位与隐藏属性的奥秘

前言&#xff1a; 在Linux系统中&#xff0c;文件和目录的权限管理是一项至关重要的任务。它决定了哪些用户或用户组可以对文件或目录执行读、写或执行等操作。传统的Linux权限模型基于用户、组和其他的概念&#xff0c;但随着时间的推移&#xff0c;这种模型在某些情况下显得…

GIT中对子仓库的使用方法介绍

git 子仓库 主仓库中添加子仓库 git submodule add <url> <path>更新子代码代码 git submodule update --init克隆含有子仓库的仓库 git clone --recurse-submodules <url>主仓库中删除子仓库 1、进入包含子仓库的父仓库的根目录 2、使用以下命令将子仓…

RISC-V知识总结 —— 指令集

资源1: RISC-V China – RISC-V International 资源2: RISC-V International – RISC-V: The Open Standard RISC Instruction Set Architecture 资源3: RV32I, RV64I Instructions — riscv-isa-pages documentation 1. 指令集架构的类型 在讨论RISC-V或任何处理器架构时&…

OpenLayers多要素旋转平移缩放及olext深度定制化

目录 1.前言2.olext官方示例3.重写Transform.js4.自定义样式5.自定义选中机制6.拓展思考6.1包围框的角度问题6.2不选中要素如何平移 7总结 1.前言 首先OpenLayers本身是支持旋转、平移、缩放的。olext 只是在 OpenLayers 的基础上又做了一层封装&#xff0c;使得看起来比较好看…

函数栈帧的创建及销毁(超详解)

目录 1.预备知识 1.1内存区的划分 1.2认识相关寄存器和汇编指令 1.2.1寄存器 1.2.2相关汇编指令 2.测试前 2.1测试代码及环境 2.2 main函数也是被其他函数调用的 3.函数栈帧的创建 4.进入函数内部 5.形参与实参 6.call/jump add函数 7.函数栈帧的销毁 7.1保存…

使用transformer来训练自己的大模型实现自定义AI绘图软件的详细操作步骤

使用transformer来训练自己的大模型实现自定义AI绘图软件的详细操作步骤&#xff01;下面的步骤是非常细致的&#xff0c;如果你有一台自己的GPU算力还算可以的服务器主机&#xff0c;想自己训练AI大模型。可以按照如下步骤开展操作。 要使用 Transformer 框架训练属于自己的大…