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

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

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

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()方法,输出美国人的国籍,并用英文输出其姓、名。

要求编程实现这些类以及测试类,创建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
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡林神不是猫

如果您觉得有帮助可以鼓励小卡哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值