JAVA实验项目(一):JAVA面向对象特征性实验

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊!

喜欢我的博客的话,记得点个红心❤️和小关小注哦!您的支持是我创作的动力!

JAVA实验项目(一):JAVA面向对象特征性实验

目录

  • JAVA实验项目(一):JAVA面向对象特征性实验
    • 实验项目一 Java面向对象特性实验
    • 一、实验目的
      • 1. 理解类的定义,掌握对象的创建与使用;
      • 2. 理解方法重载与继承的含义,学会使用方法重载;
      • 3. 学习创建子类对象 ,掌握方法重写的使用。
    • 二、实验内容
      • 1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:
        • (1)定义类Student,属性有学号、姓名、出生日期、所属院系,提供getInfo()方法输出学生的属性信息。
        • (2)本科生Undergraduate和研究生Graduate是Student类的子类,本科生增加辅导员counselor属性,研究生增加导师supervisor属性,要求在Undergraduate和Graduate中重写Student的方法getInfo().
        • (3)在测试类中创建Undergraduate和Graduate实例,调用这些实例的getInfo()方法。
      • 2. 编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。
      • 3. 编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。
      • 4. 有Human、Chinese和American三个类:Human类具有姓、名和国籍3个属性,以及showNameInNativeLanguage()方法,该方法输出国籍;Chinese类中具有showNameInNativeLanguage()方法,输出中国人的国籍,并用中文输出其姓、名;American类中具有showNameInNativeLanguage()方法,输出美国人的国籍,并用英文输出其姓、名。
    • 三、实验原理
      • 1、类的继承原理;
      • 2、比较方法重载和方法重写。
    • 四、实验环境
    • 五、实验步骤
      • 1、创建包
      • 2、创建主类
      • 3、创建测试类
    • 六、实验结果
    • 七、实验分析
      • 1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:
        • (1)定义类Student,属性有学号、姓名、出生日期、所属院系,提供getInfo()方法输出学生的属性信息。
        • (2)本科生Undergraduate和研究生Graduate是Student类的子类,本科生增加辅导员counselor属性,研究生增加导师supervisor属性,要求在Undergraduate和Graduate中重写Student的方法getInfo().
        • (3)在测试类中创建Undergraduate和Graduate实例,调用这些实例的getInfo()方法。
      • 2.编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。
        • (1) 现在请将程序 Ring.java 中的语句
        • (2) 接着为程序添加一个如下所示的默认构造函数 , 观察程序运行是否还有上述错误发生。
        • (3) 请把程序中的如下语句 :
        • (4)现在请为该圆环类 Ring 再添加两个方法以便能返回内圆和外圆的周长 , 然后在主函数 main() 中分别创建两个对象 ring1,ring2 以显示周长。
      • 3.编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。
        • (1) 在 Mobilephone 类的 display() 方法中有如下语句 :
        • (2) 子类 Mobilephone 的构造函数中有语句 super(b,num): 请指出该语句的作用。 然后请将该语句删除掉 , 编译运行程序 , 看看是否会出现如图 6-3 所示的编译错误 , 并分析原因。
        • (3) 要调用父类的构造函数可以用 super 关键字 , 而要调用本类自己的构造函数可以用 this 关键字 , 请试着在 Telephone 类中加入一个构造函数如下 :
        • (4) 现在请以 Telephone 类为父类 , 设计一个新的子类叫作小灵通 , 这个小灵通继承了 Telephone 类的属性 , 但又与移动电话有所区别。
      • 4. 有Human、Chinese和American三个类:Human类具有姓、名和国籍3个属性,以及showNameInNativeLanguage()方法,该方法输出国籍;Chinese类中具有showNameInNativeLanguage()方法,输出中国人的国籍,并用中文输出其姓、名;American类中具有showNameInNativeLanguage()方法,输出美国人的国籍,并用英文输出其姓名。要求编程实现这些类以及测试类,创建Chinese 和American类的实例,并输出这些实例的属性信息。

实验项目一 Java面向对象特性实验

一、实验目的

1. 理解类的定义,掌握对象的创建与使用;

2. 理解方法重载与继承的含义,学会使用方法重载;

3. 学习创建子类对象 ,掌握方法重写的使用。

二、实验内容

1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:

(1)定义类Student,属性有学号、姓名、出生日期、所属院系,提供getInfo()方法输出学生的属性信息。
(2)本科生Undergraduate和研究生Graduate是Student类的子类,本科生增加辅导员counselor属性,研究生增加导师supervisor属性,要求在Undergraduate和Graduate中重写Student的方法getInfo().
(3)在测试类中创建Undergraduate和Graduate实例,调用这些实例的getInfo()方法。

2. 编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。

3. 编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。

4. 有Human、Chinese和American三个类:Human类具有姓、名和国籍3个属性,以及showNameInNativeLanguage()方法,该方法输出国籍;Chinese类中具有showNameInNativeLanguage()方法,输出中国人的国籍,并用中文输出其姓、名;American类中具有showNameInNativeLanguage()方法,输出美国人的国籍,并用英文输出其姓、名。

要求编程实现这些类以及测试类,创建Chinese 和American类的实例,并输出这些实例的属性信息。

三、实验原理

1、类的继承原理;

2、比较方法重载和方法重写。

四、实验环境

电脑主机酷睿i5、内存4G以上,操作系统Windows 7以上,开发工具Myeclipse 2015。

五、实验步骤

1、创建包

2、创建主类

3、创建测试类

六、实验结果

七、实验分析

1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:

(1)定义类Student,属性有学号、姓名、出生日期、所属院系,提供getInfo()方法输出学生的属性信息。

在这里插入图片描述

(2)本科生Undergraduate和研究生Graduate是Student类的子类,本科生增加辅导员counselor属性,研究生增加导师supervisor属性,要求在Undergraduate和Graduate中重写Student的方法getInfo().

本科生Undergraduate:

研究生Graduate
在这里插入图片描述

(3)在测试类中创建Undergraduate和Graduate实例,调用这些实例的getInfo()方法。

学生测试类
在这里插入图片描述
在这里插入图片描述

本科生测试类
在这里插入图片描述
在这里插入图片描述

研究生测试类
在这里插入图片描述
在这里插入图片描述

2.编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。

Ring基础类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试类
在这里插入图片描述
在这里插入图片描述

思考1:

(1) 现在请将程序 Ring.java 中的语句

Ring ring=new Ring (5,8,“red”);
改成
Ring ring=new Ring ();
修改后编译运行 , 此时有错误发生吗 ? 分析错误的原因。
解答如下:
在这里插入图片描述

会报错,因为在主类Ring中构造的是带参方法,因而此处创建对象必须进行赋值操作

(2) 接着为程序添加一个如下所示的默认构造函数 , 观察程序运行是否还有上述错误发生。

public Ring (){
innerRadiusz=1.0, outerRadius=2.0; color=“white”;
解答如下:
在这里插入图片描述

会报错,因为在主类Ring中构造的是带参方法,因而此处进行赋值操作时要以传参的形式赋值

(3) 请把程序中的如下语句 :

System.out.println(" 圆环的内半径 :“+ring.getInnerRadius());
system.out.println(“圆环的外径 :”+ring.getouterRadius());
改成
System.out.println(" 圆环的内半径 :“+ring-innerRadius()),
system.out.println(” 圆环的外半径 :"+ring-outerRadius());
修改后编译 , 此时程序运行结果如何 , 应如何修改这个错误。
解答如下;
在这里插入图片描述

会报错,因为在主类Ring中innerRadius和outerRadius由private关键字修饰,因此访问权限受到限制,在获取成员变量数值时只能由对新创建的对象ring调用getXx()函数

(4)现在请为该圆环类 Ring 再添加两个方法以便能返回内圆和外圆的周长 , 然后在主函数 main() 中分别创建两个对象 ring1,ring2 以显示周长。

解答如下:
在主类Ring中创建两个内外周长方法
在这里插入图片描述

创建对象
在这里插入图片描述

预期结果
在这里插入图片描述

3.编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。

Telephone

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Mobilephone
在这里插入图片描述
在这里插入图片描述

Inheritance测试类
在这里插入图片描述
在这里插入图片描述

思考2:

(1) 在 Mobilephone 类的 display() 方法中有如下语句 :

System.out.println(" 话费 :"+callcost()),
试问这里调用的是子类自己的 callcost() 还是其父类的 callcost(); 如果想要在此处调用父类的 calicost() 应如何处理。 ( 提示 : 使用 super 关键字 )
解答如下:
创建测试包
在这里插入图片描述

父类:
在这里插入图片描述

子类
在这里插入图片描述

测试子类
在这里插入图片描述

结果显示
在这里插入图片描述

调用父类用super()

(2) 子类 Mobilephone 的构造函数中有语句 super(b,num): 请指出该语句的作用。 然后请将该语句删除掉 , 编译运行程序 , 看看是否会出现如图 6-3 所示的编译错误 , 并分析原因。

事实上 , 如果在子类的构造函数中不显式地使用 super 来调用父类的构造函数的话 ,那么系统将自动调用父类的无参或默认的构造函数。因此为了纠正这个错误 , 可试着在 Telephone 类中加入一个无参的构造函数。

(3) 要调用父类的构造函数可以用 super 关键字 , 而要调用本类自己的构造函数可以用 this 关键字 , 请试着在 Telephone 类中加入一个构造函数如下 :

Telephone (String b ,String n,double r){
this(b,n);
rate =r;
}
然后在主程序中用这个构造函数来创建一个 Telephone 对象 , 看看它能否起作用。

(4) 现在请以 Telephone 类为父类 , 设计一个新的子类叫作小灵通 , 这个小灵通继承了 Telephone 类的属性 , 但又与移动电话有所区别。

4. 有Human、Chinese和American三个类:Human类具有姓、名和国籍3个属性,以及showNameInNativeLanguage()方法,该方法输出国籍;Chinese类中具有showNameInNativeLanguage()方法,输出中国人的国籍,并用中文输出其姓、名;American类中具有showNameInNativeLanguage()方法,输出美国人的国籍,并用英文输出其姓名。要求编程实现这些类以及测试类,创建Chinese 和American类的实例,并输出这些实例的属性信息。

Human
在这里插入图片描述

Chinese
在这里插入图片描述

ChineseDemo
在这里插入图片描述
在这里插入图片描述

American
在这里插入图片描述

AmericanDemo
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

从0到1,百亿级任务调度平台的架构与实现

尼恩:百亿级海量任务调度平台起源 在40岁老架构师 尼恩的读者交流群(50)中,经常性的指导小伙伴们改造简历。 经过尼恩的改造之后,很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#x…

如何从集装箱的标准化启发软件的模块化设计?

目录 一、集装箱的历史发展 1、早期设想与萌芽 2、英国铁路初步应用 3、美欧多国发展 4、国际组织推动 5、海运集装箱兴起 6、标准化进程加速 7、联运格局形成 8、后续发展与影响 二、集装箱的标准化意义 三、集装箱的标准化与软件设计的模块化 1、集装箱标准化 2…

Vue的学习 —— <vue事件处理>

前言 事件指的就是用户和网页交互的行为,这些行为,包括:鼠标单击、鼠标双击、键盘按下、抬起等。为了简化开发,Vue为开发者提供了事件修饰符,它可以与v-on配合使用,以便于对事件进行控制和处理&#xff0c…

【回眸】git VS repo 区别

git VS repo 区别 1. git:Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 2. Repo: Repo是谷歌用Python脚本写的调用git的一个脚本,Repo实现管理多个git库。 Git 常用命令 1. git init:在当前目…

QT部分学习笔记

文章目录 1.前言注意问题2.学习历程2.0 创建项目 快捷键:2.1 创建按钮2.2 对象树2.3 调试输出2.4 QT坐标系2.5 信号和槽 3.Qmainwindow3.1 窗口菜单栏创建3.2 工具栏3.3 状态栏3.4 铆接部件3.5 对话框 4. 1.前言 版本: 5.9.9 注意问题 Qstring类型通多…

Nginx配置到系统中

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Nginx(“engine x”…

【C语言每日题解】三题:回文检查、刘备 关羽 张飞三人过年放鞭炮、约瑟夫环问题(犹太人死亡游戏)(难度up,推荐)

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🌈感谢大家的阅读、点赞、收藏和关注 🥰希望大家喜欢我本次的讲解 🌟非常推荐最后一道题 🌹 犹太人死亡游戏,建议观看 &…

一文全解聚碳酸酯PC材料在汽车灯罩制造中的诸多显著优势!汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

聚碳酸酯PC材料在汽车灯罩制造中具有诸多显著优势。除了优异的抗冲击性、透明性、耐热性和稳定性外,还有以下一些重要优势: 出色的光学性能:PC材料的光学性能优异,能够确保灯罩内的光源均匀分布,减少光斑和眩光&#…

C++的数据结构(八):线段树

线段树是一种高效的树形数据结构,用于处理区间查询和区间更新问题。它的基本思想是将一个大的区间分解为若干个小的、不相交的区间,每个小区间对应线段树中的一个节点。线段树的每个节点保存了该区间的信息(如区间最大值、区间和等&#xff0…

尝试使用官方jailhouse-images仓库运行jailhouse

jailhouse 的官方 demo 演示仓库 Demo and testing images: https://github.com/siemens/jailhouse-images 通过jailhouse 的官方 demo 演示仓库,可以直接编译出带有部署有jailhouse程序的Linux镜像,有多个目标平台的Linux镜像可选,也有在qe…

C语言实训项目源码-02餐厅饭卡管理系统-C语言实训C语言大作业小项目

C语言餐厅饭卡管理系统 一、主要功能 主要功能模块 页面名称 实现功能 负责人 进入页面 进入程序 主函数 系统主要功能 修改密码函数 修改密码 充值,显示函数 饭卡充值与信息显示 购买饭菜…

SpringBoot:缓存

点击查看SpringBoot缓存demo:LearnSpringBoot09Cache-Redis 技术摘要 注解版的 mybatisCacheConfigCacheableCachePut:既调用方法,又更新缓存数据;同步更新缓存CacheEvict:缓存清除Caching:定义复杂的缓存…