Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊!
喜欢我的博客的话,记得点个红心❤️和小关小注哦!您的支持是我创作的动力!
JAVA实验项目(一):JAVA面向对象特征性实验
目录
- JAVA实验项目(一):JAVA面向对象特征性实验
-
- [实验项目一 Java面向对象特性实验](#实验项目一 Java面向对象特性实验)
- 一、实验目的
-
- [1. 理解类的定义,掌握对象的创建与使用;](#1. 理解类的定义,掌握对象的创建与使用;)
- [2. 理解方法重载与继承的含义,学会使用方法重载;](#2. 理解方法重载与继承的含义,学会使用方法重载;)
- [3. 学习创建子类对象 ,掌握方法重写的使用。](#3. 学习创建子类对象 ,掌握方法重写的使用。)
- 二、实验内容
-
- [1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:](#1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:)
- [2. 编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。](#2. 编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。)
- [3. 编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。](#3. 编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。)
- [4. 有Human、Chinese和American三个类:Human类具有姓、名和国籍3个属性,以及showNameInNativeLanguage()方法,该方法输出国籍;Chinese类中具有showNameInNativeLanguage()方法,输出中国人的国籍,并用中文输出其姓、名;American类中具有showNameInNativeLanguage()方法,输出美国人的国籍,并用英文输出其姓、名。](#4. 有Human、Chinese和American三个类:Human类具有姓、名和国籍3个属性,以及showNameInNativeLanguage()方法,该方法输出国籍;Chinese类中具有showNameInNativeLanguage()方法,输出中国人的国籍,并用中文输出其姓、名;American类中具有showNameInNativeLanguage()方法,输出美国人的国籍,并用英文输出其姓、名。)
- 三、实验原理
- 四、实验环境
- 五、实验步骤
- 六、实验结果
- 七、实验分析
-
- [1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:](#1. 设计学生类Student,以及它的子类:本科生Undergraduate和研究生Graduate。各类的要求如下:)
- [2.编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。](#2.编写一个圆环类 Ring 的 Java 程序。圆环类有 3 个数据成员 , 分别是内半径 innerRadius, 外半径 outerRadius 和颜色 color, 这些属性可以查看 get 也可以重新设置 set, 另外 , 圆环还可以返回其面积 area。)
-
- [(1) 现在请将程序 Ring.java 中的语句](#(1) 现在请将程序 Ring.java 中的语句)
- [(2) 接着为程序添加一个如下所示的默认构造函数 , 观察程序运行是否还有上述错误发生。](#(2) 接着为程序添加一个如下所示的默认构造函数 , 观察程序运行是否还有上述错误发生。)
- [(3) 请把程序中的如下语句 :](#(3) 请把程序中的如下语句 :)
- [(4)现在请为该圆环类 Ring 再添加两个方法以便能返回内圆和外圆的周长 , 然后在主函数 main() 中分别创建两个对象 ring1,ring2 以显示周长。](#(4)现在请为该圆环类 Ring 再添加两个方法以便能返回内圆和外圆的周长 , 然后在主函数 main() 中分别创建两个对象 ring1,ring2 以显示周长。)
- [3.编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。](#3.编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。)
-
- [(1) 在 Mobilephone 类的 display() 方法中有如下语句 :](#(1) 在 Mobilephone 类的 display() 方法中有如下语句 :)
- [(2) 子类 Mobilephone 的构造函数中有语句 super(b,num): 请指出该语句的作用。 然后请将该语句删除掉 , 编译运行程序 , 看看是否会出现如图 6-3 所示的编译错误 , 并分析原因。](#(2) 子类 Mobilephone 的构造函数中有语句 super(b,num): 请指出该语句的作用。 然后请将该语句删除掉 , 编译运行程序 , 看看是否会出现如图 6-3 所示的编译错误 , 并分析原因。)
- [(3) 要调用父类的构造函数可以用 super 关键字 , 而要调用本类自己的构造函数可以用 this 关键字 , 请试着在 Telephone 类中加入一个构造函数如下 :](#(3) 要调用父类的构造函数可以用 super 关键字 , 而要调用本类自己的构造函数可以用 this 关键字 , 请试着在 Telephone 类中加入一个构造函数如下 :)
- [(4) 现在请以 Telephone 类为父类 , 设计一个新的子类叫作小灵通 , 这个小灵通继承了 Telephone 类的属性 , 但又与移动电话有所区别。](#(4) 现在请以 Telephone 类为父类 , 设计一个新的子类叫作小灵通 , 这个小灵通继承了 Telephone 类的属性 , 但又与移动电话有所区别。)
- [4. 有Human、Chinese和American三个类:Human类具有姓、名和国籍3个属性,以及showNameInNativeLanguage()方法,该方法输出国籍;Chinese类中具有showNameInNativeLanguage()方法,输出中国人的国籍,并用中文输出其姓、名;American类中具有showNameInNativeLanguage()方法,输出美国人的国籍,并用英文输出其姓名。要求编程实现这些类以及测试类,创建Chinese 和American类的实例,并输出这些实例的属性信息。](#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