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

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

相关推荐
minji...6 分钟前
C++ 详细讲解vector类
开发语言·c++
LiuYaoheng9 分钟前
【Android】View 的基础知识
android·java·笔记·学习
项目題供诗9 分钟前
Hadoop(八)
大数据·hadoop·分布式
勇往直前plus17 分钟前
Sentinel微服务保护
java·spring boot·微服务·sentinel
星辰大海的精灵17 分钟前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
小鸡脚来咯20 分钟前
一个Java的main方法在JVM中的执行流程
java·开发语言·jvm
江团1io021 分钟前
深入解析三色标记算法
java·开发语言·jvm
天天摸鱼的java工程师29 分钟前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
在未来等你30 分钟前
Kafka面试精讲 Day 7:消息序列化与压缩策略
大数据·分布式·面试·kafka·消息队列
在未来等你30 分钟前
Kafka面试精讲 Day 10:事务机制与幂等性保证
大数据·分布式·面试·kafka·消息队列