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

news2024/11/20 18:34:22

目录

一、实验目的

二、实验内容

三、实验小结


一、实验目的

  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.coloradmin.cn/o/1466131.html

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

相关文章

C++力扣题目300--最长递增子序列 674--最长连续递增序列 718--最长重复子数组

300.最长递增子序列 力扣题目链接(opens new window) 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2…

深入理解flinksql执行流程,calcite与catalog相关概念,扩展解析器实现语法的扩展

深入理解Flink Sql执行流程 1 Flink SQL 解析引擎1.1SQL解析器1.2Calcite处理流程1.2.1 SQL 解析阶段(SQL–>SqlNode)1.2.2 SqlNode 验证(SqlNode–>SqlNode)1.2.3 语义分析(SqlNode–>RelNode/RexNode&#…

R的seurat和python的scanpy对比学习

现在的单细胞分析,往往避免不了scanpy的使用,我们可以通过对比seurat来学习scanpy 今天的格式怎么都改不了。。。手机阅读有点费劲,,推荐电脑阅读。 单细胞数据分析概览 单细胞分析,总流程 python教程 seurat教程 se…

ubuntu20配置protobuf 2.5.0

python安装protobuf包 sudo pip2 install protobuf2.5.0github克隆获取安装包 wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz解压并进入该目录 tar -zxvf Protobuf-2.5.0.tar.gz cd protobuf-2.5.0配置安装环境 sudo …

HTB pwn Dragon Army

逆向分析 程序使用了alloca函数扩大了栈区 此处可以泄露libc的地址 程序主要功能在下面 while ( 1 ){while ( 1 ){fflush(stdin);fflush(_bss_start);fprintf(_bss_start, "\n%sDragons: [%d/%d]%s\n\n", "\x1B[1;34m", v5, 13LL, "\x1B[1;37m"…

【洛谷题解】B2118 验证子串

题目链接&#xff1a;验证子串 - 洛谷 题目难度&#xff1a;入门 涉及知识点&#xff1a;STL函数 题意&#xff1a; 分析&#xff1a;用一个STL内置的find函数 AC代码&#xff1a; #include<bits/stdc.h> /*find用法&#xff1a;string s1&#xff0c;s2;int as1.f…

crmeb多门店商城系统二次开发 增加车辆车牌搜索功能、车辆公里数

1、增加的数据库 ALTER TABLE eb_store_order ADD cart_number VARCHAR(255) NOT NULL DEFAULT COMMENT 车牌 AFTER erp_order_id, ADD curmileage VARCHAR(255) NOT NULL DEFAULT COMMENT 当前里程 AFTER cart_number; ALTER TABLE eb_store_cart ADD cart_number VARCHAR(…

容器_Docker ( 04 )

容器_Docker ( 03 ) 解密云原生 - 集群概述 kubernetes概述 kubernetes起源 如果想要将docker应用于具体的业务实现 , 是存在困难的 – 编排, 管理和调度等各个方面 , 都不容易.于是 , 人们迫切需要一套管理系统 , 对docker及容器进行更高级更灵活的管理 , 于是kubernetes出…

Kotlin filterIsInstance filterNotNull forEach

Kotlin filterIsInstance filterNotNull forEach fun main(args: Array<String>) {val i1 MyItem(1, 1)val i2: MyItem? nullval i3: Int 3val i4 "4"val i5 nullval i6 MyItem(6, 6)val list mutableListOf<Any?>(i1, i2, i3, i4, i5, i6)lis…

蓝牙耳机哪个品牌质量好?2024超高性能机型比拼推荐

​无线耳机已经成为现代生活中的必备数码产品&#xff0c;尤其在感受到无线带来的自由后&#xff0c;很难再适应有线耳机的束缚。因此&#xff0c;耳机市场竞争激烈&#xff0c;各种类型和外观的耳机层出不穷。在此&#xff0c;我为大家总结了五款使用体验很不错的蓝牙耳机&…

静态时序分析:SDC约束命令set_driving_cell详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在上文中&#xff0c;我们不建议使用set_drive命令而是使用set_driving_cell命令&#xff0c;这是一个描述输入端口驱动能力更精确的方法。因为大多数情况下&…

黑马头条-day10

文章目录 app端文章搜索1、文章搜索1.1 ElasticSearch环境搭建1.2 索引库创建①需求分析②ES导入数据场景分析③创建索引和映射 1.3 索引数据同步①app文章历史数据导入ES②文章实时数据导入ES 1.4 文章搜索多条件复合查询①关键词搜索②搜索接口定义 2、搜索历史记录2.1 需求说…

免费的代理IP能用吗?

随着大家对代理IP的认知逐步加深&#xff0c;不可避免地&#xff0c;免费代理IP安全性和潜在风险也越来越关注&#xff0c;今天我们就来一探究竟&#xff0c;这到底是怎么一回事。 首先&#xff0c;我们得了解一下代理IP。 代理IP是指作为中介的服务器&#xff0c;它能够代理用…

java.lang.IllegalStateException: Promise already completed.

spark submit 提交作业的时候提示Promise already complete 完整日志如下 File "/data5/hadoop/yarn/local/usercache/processuser/appcache/application_1706192609294_136972/container_e41_1706192609294_136972_02_000001/py4j-0.10.6-src.zip/py4j/protocol.py"…

修改单据转换规则后保存报错提示

文章目录 修改单据转换规则后保存报错提示 修改单据转换规则后保存报错提示

软考系分之多媒体分类、声音、图像

文章目录 1、概要2、 媒体分类3、声音4、图像5、总结 1、概要 本篇重点介绍多媒体技术&#xff0c;包括多媒体分类、声音、图像。 2、 媒体分类 媒体主要分为5类&#xff0c;感觉媒体、表现媒体、表示媒体、传输媒体和存储媒体。感觉媒体&#xff0c;就是直接作用于人感官的媒…

android input命令支持多指触摸成果展示-千里马framework实战开发

hi input命令扩展提示部分 generic_x86_64:/ # input -h Error: Unknown command: -h Usage: input [<source>] <command> [<arg>...]The source…

体验LobeChat搭建私人聊天应用

LobeChat是什么 LobeChat 是开源的高性能聊天机器人框架&#xff0c;支持语音合成、多模态、可扩展的&#xff08;Function Call&#xff09;插件系统。支持一键免费部署私人 ChatGPT/LLM 网页应用程序。 地址&#xff1a;https://github.com/lobehub/lobe-chat 为什么要用Lobe…

如何快速导出vercel project中的环境变量

我在vercel中集成了某些插件或者链接了数据库&#xff0c;要如何快速的导出这些环境变量呢&#xff1f; 具体方法如下&#xff1a; npm i -g vercelvercel linkvercel env pull .env.local首先是安装vercel然后登录vercel 最后拉取环境变量到.env.local

2.22学习总结

1.营救 2.租用游艇 3.砍树 4.买礼物 5.刷题统计 砍树https://www.dotcpp.com/oj/problem3157.html 题目描述 给定一棵由 n 个结点组成的树以及 m 个不重复的无序数对 (a1, b1), (a2, b2), . . . , (am, bm)&#xff0c;其中 ai 互不相同&#xff0c;bi 互不相同&#xff0c;ai…