【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://xiahunao.cn/news/2804324.html

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

相关文章

【SelectIO】bitslice原语学习记录

基本概念 在Ultrascale (plus)系列上的FPGA中,Xilinx引入了bitslice硬核,它取代了7系列上的IDELAYCTRL/IODELAY/IOSERDES/IODDR系列硬核,用于为HP(High Performance)类型Bank上的IO接口提供串并转化、信号延时、三态控…

读取7400MB/s!华为发布eKitStor Xtreme M.2闪存条

今日,华为举行数据存储新春新品发布会,不仅发布全新数据湖解决方案,华为还针对商业市场与分销市场发布了全闪存存储新品。 据介绍,面向游戏加速、影视编辑、户外作业等场景,华为发布eKitStor Xtreme系列高性能M.2闪存条…

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

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

【Java网络编程06】HTTPS原理

1. HTTPS基本概念 HTTPS:HTTPS也是一个应用层协议,它在HTTP协议的基础上引入了一个加密层——SSL协议,区别就在于HTTP协议是基于明文传输的(不安全),使用HTTPS加密就能在一定程度上防止数据在传输过程中被…

Keepalived实现Nginx的高可用集群案例

服务器规划: serverb(nginx2):192.168.233.144 serverc(客户端):192.168.233.140 serverd(nginx1):192.168.233.141 结构图: serverd(nginx1): # 安装nginx yum install nginx -y# 进入nginx配置目录 cd /e…

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture07多维输入

lecture07多维输入 课程网址 Pytorch深度学习实践 部分课件内容: import torch import numpy as npxy np.loadtxt(diabetes.csv.gz, delimiter,, dtypenp.float32) x_data torch.from_numpy(xy[:,:-1]) #第一列开始最后一列不要 y_data torch.from_numpy(…

[已解决]npm淘宝镜像最新官方指引(2023.08.31)

最新的配置淘宝镜像的淘宝官方提供的方法 npm config set registry https://registry.npmmirror.com原来的 registry.npm.taobao.org 已替换为 registry.npmmirror.com ,当点击 registry.npm.taobao.org 会默认跳转到 registry.npmmirror.com 如果你想将npm的下载…

python 打包 apk

转换之前python代码需要使用指定的框架才能转换,列如:kivy from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Buttonimport time import pyautogui import threadingstatus False# 这是一个将被线程执…

2022蓝帽杯取证初赛

检材:https://pan.baidu.com/s/1ibOdxyCWeC5x0DQKjwcz7w?pwdvg6g 目录 手机取证1、627604C2-C586-48C1-AA16-FF33C3022159.PNG图片的分辨率是?(答案参考格式:19201080)2、姜总的快递单号是多少?&#xff0…

项目开发Eclipse中Jar包的管理和使用

一、如何生成Jar包? Jar生成主要是给别人用的,可以通过Eclipse的Export功能,导出jar包文件。 1. 在Eclipse中,右键单击项目,并选择“Export”。 2. 在弹出的“Export”窗口中,选择“Java” -> “JAR f…

C# Onnx 使用onnxruntime部署实时视频帧插值

目录 介绍 效果 模型信息 项目 代码 下载 C# Onnx 使用onnxruntime部署实时视频帧插值 介绍 github地址:https://github.com/google-research/frame-interpolation FILM: Frame Interpolation for Large Motion, In ECCV 2022. The official Tensorflow 2…

《springcloud alibaba》 二 nacos配置中心

目录 父项目配置pom.xmlconfig-nacos项目pom.xml配置文件application.ymlbootstrap.yml 启动类配置 多环境配置groupRefreshScope 市面上配置中心大致分为三种 springcloud configapollonacos 推荐使用 父项目配置 pom.xml <?xml version"1.0" encoding"…

2024年阿里云服务器优惠价格表,值得买云主机清单

2024阿里云服务器优惠活动政策整理&#xff0c;轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价&#xff0c;企业用户2核4G5M带宽199元一年&#x…

Netty是如何解决JDK中的Selector的bug的?

Selector BUG: JDK NIO的BUG, 例如臭名昭著的epoll bug&#xff0c;它会导致Selector空轮询&#xff0c;最终导致CPU 100%, 官方声称在JDK 1.6版本的update18修复了该问题&#xff0c;但是直到JDK1.7版本该问题仍旧存在&#xff0c;只不过该BUG发生 概率降低了一些而已&#x…

渗透测试—信息收集

渗透测试—信息收集 1. 收集域名信息1.1. 域名注册信息1.2. SEO信息收集1.3. 子域名收集1.3.1. 在线子域名收集1.3.2. 子域名收集工具 1.4. 域名备案信息1.5. ICP备案号查询1.6. SSL证书查询 2. 收集真实IP2.1. 超级ping2.2. Ping2.3. CDN绕过 3. 收集旁站或C段IP3.1. 旁站或C段…

桥梁防船撞监测预警系统解决方案

一、方案概述 随着航道交通的快速发展&#xff0c;通航船舶日益增多&#xff0c;船舶超高以及偏航带来诸多安全隐患&#xff0c;时常发生桥梁受到船舶碰撞的事故&#xff0c;轻则桥梁结构和船舶受到损伤&#xff0c;重则桥梁垮塌&#xff0c;不但经济损失巨大&#xff0c;更会造…

Python | 获取命令行参数

一、sys模块 sys模块可以获取命令行参数。通过sys.argv可以访问所有命令行参数&#xff0c;返回值是包含所有命令行参数的列表。列表各元素意义如下&#xff1a; 参数1(脚本名)&#xff1a; sys.argv[0] 参数2&#xff1a; sys.argv[1] 参数3&#xff1a; sys.argv[2] ... 参数…

第五章 流程控制之循环

目录 1.1. for循环 1.1.1. 带列表的for循环 1.1.2. 不带列表的for循环 1.1.3. 基于C语言风格的for循环 1.2. while循环 1.2.1. 格式 1.2.2. while循环读取文件 1.3. until循环 1.3.1. 作用 1.4. 循环控制 1.4.1. 组成 1.4.2. 详细语法&#xff1a; 1.4.3. 示例 1…

JAVA工程师面试专题-并发编程篇

目录 一、线程 1、并发与并行的区别 2、同步和异步的区别 3、Java中创建线程有哪些方式? 4、Thread和Runnable的区别 5、Java中的Runnable、Callable、Future、FutureTask的区别和联系&#xff1f; 6、说一下你对 CompletableFuture 的理解 7、volatile关键字有什么用&…

Kubernetes 声明式API

对于声明式API来说&#xff0c;只需向系统提交一个定义好的API对象来声明资源对象的"期望状态"。然后由系统去确保资源对象从"当前状态"迁移到"期望状态"。这里的API对象是一种"意向表达&#xff08;Record of Intent&#xff09;“。创建A…