JAVA实验报告(圆类,动物继承,人类继承)
更新时间:2023-11-13 06:35:01 阅读量: 教育文库 文档下载
《Java程序设计》 实验报告
2014年10 月17日 姓名 课程 名称 Java语言程序设计 班 级 实验项目名 称 软工班 构造方法与继承 学 号 指导教师 13139042 一、实验目的:。 1. 编写程序定义圆类Circle,把圆的性质和行为用代码块封装起来。圆的性质包括圆的半径,圆心坐标,行为包括计算圆面积,计算圆周长、设置半径、获取半径、计算圆个数。实例化若干个圆对象,调用相应方法计算出圆面积、圆周长并计圆个数。 2. 编程实现类的继承。编写父类People,子类Student继承自人类。人类具有姓名,性别,年龄等性质,还具有吃和说的行为。学生类继承父类,还拥有学号性质和学习行为。构造人类和学生类的对象,调用吃、说、学习的方法输出有关信息。 3. 使用 Java的继承关系来描述动物世界的特征和关系。 ( 1 ) 抽象出项目问题中的对象 :动物、老鼠、熊猫。 ( 2 ) 抽象出每种对象所具有的性质:名字和食物。 ( 3 ) 抽象出每种对象所具有的行为,动物具有吃的行为和睡觉的行为,老鼠除具有动物行为外还具有打洞行为。 ( 4 ) 抽象出继承关系,老鼠类和熊猫类作为子类继承父类动物类,子类继承父类的属性和方法。 4.定义汽车类,其中包含所有汽车共有的属性如名字、排量、油耗、时速等,包含行为如点火、熄火、前进、倒退、鸣笛等,然后在测试类中用定义的类来创建对象,输出该对象的属性和行为信息。 5按以下要求编写程序
(1) 创建一个正方形类,添加正方形的边作为成员变量 (2) 在正方形类中添加两种方法分别计算正方形的周长和面积 (3) 编程在测试类中输出一个正方形的周长和面积 二、实验原理(可以流程图的形式出现,加以文字说明) 1. 定义圆类Circle. ( 1 ) 抽象出Circle类包含成员变量radius、x和y,它们的类型均为double,代表了圆的半径和坐标属性。成员方法setRadius( )、getRadius( )、calcArea( )、calcGirth( ),分别实现设置半径、返回半径、计算面积、计算周长的行为。其中setRadius( )方法用于给半径赋值没有返回值,类型为void。calcArea( )、calcGirth( ) 、getRadius( )方法用于计算和返回半径值,类型为double。 ( 2 ) 声明用于保存圆数量的成员变量num,由Circle类创建任意圆对象时num值均要加1。 num变量应该是被所有圆对象共享,所以使用static关键字声明num为静态变量。使用static声明静态方法getNum( )用来返回num值,返回类型为int。具体声明语句为: private static int num; public static int getNum(){ return num;} ( 3 ) 使用static final关键字声明静态的符号常量PI(符号常量通常定义为大写字母),并给其赋值为3.14159,该常量可以被所有Cirlce类的圆对象使用,具体声明语句为: public static final double PI = 3.14159; ( 4 ) 定义两个构造方法,一个无参的构造方法和一个带参数构造方法,其中带参构造方法对圆对象进行初始化,将参数r传递给圆对象的成员变量radius,。无参构造
方法则不初始任何变量。若需要在圆对象被创建时将圆的数量num增加,可以在构造方法里对num变量进行增加。 ( 5 ) 程序的入口方法main,在该方法中实例化若干个圆对象,并调用该对象的setRadius( )、getRadius( )、calcArea( )、calcGirth( )、getNum( )方法来输出该对象的半径、周长、面积属性及圆个数。 2. 实现类的继承. ( 1 ) 人类是学生类的父类,人类具有姓名,性别,年龄等性质,学生类是人类的子类也具有如上性质,并且学生类还具有学号这一特性。所以人所具有的共性都封装在人类这一父类中,学生类不但继承了人类的共性还具有自己的特有属性学号。人类中具有了吃和说的行为,学生也继承了这些行为,并且学生还具有了学习这一行为。 根据以上分析定义两个类People和Student,People类包括成员变量name、sex、age属性,成员方法eat( )和speek( )。其中name、sex、age属性的访问控制符定义为protected,protected修饰的成员可以被本包中的类以及其子类继承访问。eat( )、speek( )方法的访问控制符定义为public,public修饰的方法其访问权限最大可以被所有类访问。 ( 2 ) 使用extends关键字实现继承,学生类继承人类共有的属性和方法,此外具有stuNo学号属性和learn( )学习方法。 ( 3 ) 父类People中定义的构造方法负责对name、sex、age变量初始化,子类Student中定义构造方法继承父类构造并对stuNo属性初始化。在Student类的构造方法的第一句使用super(name, sex, age) 语句显式调用父类构造,保证父类构造被调用之后再调用子类构造。
( 4 ) 编写程序的入口方法main,在该方法中实例化人类对象和学生对象,并调用对象的相应方法输出信息。 3. 描述动物世界的特征和关系. Animal Panda Mouse eat sleep dig ( 1 ) 动物世界的名字和食物是共有的属性,吃和睡觉是共有的行为。定义Animal类,在该类中定义成员变量name 和food,成员方法eat( )和sleep( )。根据封装性的要求将name和food属性定义为private私有的,保证该属性只能被在本类内部访问,其他类或派生类要访问该属性可以通过public公有的方法setName( )、getName( )、setFood( )、getFood( )进行访问,其中setXXX( )方法用于给属性赋值,getXXX( )方法用于返回属性。 ( 2 ) 定义老鼠类Mouse和熊猫类Panda,这两类均继承自Animal类,继承动物类的name 和food属性以及eat( )和sleep( )方法。Mouse类和Panda类在构造方法中调用setName( )和setFood( )方法对名称和食物属性初始化。 ( 3 ) 老鼠类定义打洞方法dig( )输出信息。
( 4 ) 定义测试类AnimalTest,编写程序入口main( )方法,在该方法中创建老鼠和熊猫对象,调用相应方法输出信息。 4.汽车的属性和行为。 (1)建立汽车类Car,汽车属性:名字,排量,油耗,时速分别记作成员变量name,pailia,oilconsume,speed.均用private修饰。定义公共方法点火,熄火,前进,倒退,鸣笛分别为fire(),unfire(),go(),back(),whistle(). (2)创建有参构造函数car(String name,int pailia,int oilconsume,int speed)初始化属性,创建类事例car输出属性和行为。 5.求正方形周长和面积。 (1)建立Square类,定义边长为sl,用private修饰。创建方法grith()和are()分别求周长和面积。 (2)创建有参构造方法square(int sl),初始化边长,创建圆对象并输出周长和面积。 三、实验代码 1. 定义圆类Circle. public class Circle { private double radius;//圆的半径 private double x;//横坐标 private double y;//纵坐标 private static int num;//圆的个数 private static final double PI = 3.14159; public double getRadius() {//返回半径
} return radius; public void setRadius(double radius) {//设置半径 } public double calcArea() {//计算圆面积 } public double calcGrith() {//计算圆周长 } return 2*PI*this.radius; return PI*this.radius*this.radius; this.radius = radius; public static int getNum() {//返回圆的个数 } return num; public Circle(){//无参数构造方法 } public Circle(double radius,double x,double y) { //带参数构造方法 if (radius < 0) { System.out.println(\半径不可以为负数!\num++;
} } else { //初始化圆的属性 } this.radius = radius; this.x = x; this.y = y; num ++; public static void main(String[] args) { Circle circle1 = new Circle(10,1,1);//创建对象圆1 Circle circle2 = new Circle(20,1,1); //创建对象圆2 Circle circle3 = new Circle(30,1,1); //创建对象圆3 System.out.print(\圆1的半径: \System.out.print(\圆1的面积: \System.out.println(\圆1的周长: \System.out.print(\圆2的半径: \System.out.print(\圆2的面积: \System.out.println(\圆2的周长: \System.out.print(\圆3的半径: \System.out.print(\圆3的面积: \
} } System.out.println(\圆3的周长: \System.out.println(\圆的个数: \2. 实现类的继承. class People {//父类——人 protected String name;//姓名 protected String sex;//性别 protected int age;//年龄 protected String getName() {//返回姓名 } protected void setName(String name) {//设置姓名 } protected String getSex() {//返回性别 } protected void setSex(String sex) {//设置性别 this.sex=sex; return sex; this.name=name; return name;
} protected int getAge() {//返回年龄 } protected void setAge(int age) {//设置年龄 } public static void eat() {//吃 } public static void speak() {//说话 } System.out.print(\我在说话!\System.out.print(\我在吃饭! \ this.age=age; return age; public People(String name, String sex, int age) {//初始化共有属性 this.name = name; this.sex = sex; this.age = age; } } class Student extends People {//子类——学生
protected long stuNo;//学号 protected long getStuNo() {//返回学号 } protected void setStuNo(long stuNo) {//设置学号 } public static void learn() {//学习方法 } public Student(String name, String sex, int age, long stuNo) {//构造方法 System.out.println(\我的学习方法!\this.stuNo=stuNo; return stuNo; super(name, sex, age); this.stuNo = stuNo; } } public class TestPeople {//测试类 public static void main(String[] args) { Student student = new Student(\张一飞\男\ System.out.print(\姓名:\System.out.print(\性别:\
} public static void whistle() {//鸣笛 } public Car(String name,int pailia,int oilconsume,int speed) {//构造方法 } Public static void main(String args[]) { Car car = new Car(\宝马\实例化一个汽车 System.out.println(\汽车的属性:\System.out.println(); System.out.print(\汽车品牌:\System.out.print(\排量:\System.out.print(\油耗:\System.out.println(\时速:\System.out.println(); System.out.println(); System.out.println(\汽车的行为:\System.out.println(); this.name = name; this.pailia = pailia; this.oilconsume = oilconsume; this.speed = speed; System.out.print(\鸣笛! \
} } Car.fire();//点火 Car.outfire();//熄火 Car.go();//前进 Car.back();//倒退 Car.whistle();//鸣笛 5.求正方形的周长和面积. class Squre {//定义正方形类 private int sl;//定义边长 public int getSl() {//返回边长 } public void setSl(int sl) {//设置边长 } public int grith() {//求周长 } public int area() {//求面积 return this.sl*this.sl; return 4*this.sl; this.sl = sl; return sl;
} } public Squre(int sl) {//构造方法 } this.sl = sl; public class Test {//测试类 Squre s = new Squre(5); System.out.print(\正方形边长:\周长:\System.out.println(\面积:\ } 四、实验过程原始记录(数据、图表、计算等) 注:此次报告没有相关数据,实验过程详见第二部分实验原理。 五、实验结果及分析,以及心得体会 1. 定义圆类Circle. } public static void main(String args[]) {
心得体会:主要是构建3个对象,操作过程中,老是出现3个圆对象结果相同的情况,反复上机测试才发现是成员变量中的radius,应该用this.radius才能获取到。 2. 实现类的继承. 心得体会:主要运用构造方法的实例化和继承知识。 3. 描述动物世界的特征和关系.
心得体会:主要对name和food进行初始化,以及继承的使用。 4. 汽车的基本属性和行为 . 5.求正方形的周长和面积. 总的心得体会:经过这5个小程序的编写,我已经能够熟练地操作程序,对构造方法和继承方面的知识有了更深的理解,并能够编写简单的有关继承和构造方法的小程序。
正在阅读:
最新签派执照考试题库02-03
2013年上半年软考《系统分析师》下午真题试卷(参考答案+解析版)12-04
2018-2019新当选党支部委员表态发言稿-实用word文档(4页)11-16
2013年南京造价员培训资料建筑工程定额与预算模拟题二06-13
计量经济学期末考试试题两套及答案 207-10
并购融资经典案例12-21
线段、直线和和射线说课稿07-09
《中国矿山工程》征稿启示05-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 继承
- 人类
- 动物
- 实验
- 报告
- JAVA
- 2017-2018电子产业深度趋势报告 - 图文
- 测树学复习题
- 第九届全国高校电子商务教育与学术研讨会(录用论文)
- 基于红外摄像机的嵌入式网络视频服务器
- 2011版高中地理一轮复习 城市化精品学案 新人教版必修2
- 第六章 吸光光度法
- 落料冲孔复合模设计
- 猪八戒商业模式分析
- 物流基础设施与设备习题
- 小学校长后备干部学习题库
- 丁兆臻组长在廉政风险调研座谈会暨廉情通报分析联席会议上的讲话
- 信访工作调研报告
- IT行业人员名单
- 2018年10月自考02236可编程控制器原理与应用试题及答案含评分标准
- SAS程序及函数详解
- 公安基础知识和题库
- 高数模拟试题(下)
- 如何区分同形同音异义词、同音异义词、同形异义词
- 关于执行《XX集团财务管理制度体系建设管理规定》
- 某企业季度考核与奖金分配办法