配色: 字号:
实验三 类与类的特性
2023-10-12 | 阅:  转:  |  分享 
  
实验三 类与类的特性实验日期:2023.4.24学号:202134000111姓名:李文宜一、实验目的1、掌握定义类、创建对象以及方法参数传
递的语法2、学会类的构造方法、类中方法的重载、类的静态成员的定义和使用;3、理解类的封装、继承与多态,并掌握如何在实际编程中应用。
二、实验内容完成如下任务或编写能够满足如下条件的程序:1、调试教材对应章节的例题,确保自己可以做出每一道题。2、完成如下任务或编写
能够满足如下条件的程序:(1)(实验目的:学习类的一般结构与类的定义;学习类的成员变量和成员方法的声明格式)在程序中定义一个 St
udent 类,并且接照要求补全Java 程序代码。(2)(实验目的:学习创建对象,调用对象的成员变量与成员方法。)编写一个程序,
在程序中创建(1)题目中Student类的两个实例,并访问它们的属性和方法,并输出如下结果。(3)(实验目的:学习方法调用时参数的
传递)在第(2)题的基础上为 Student类增加一个方法,该方法能够接收参数并对 Student 类中的各个属性进行赋值。编写一
个程序,通过调用新定义的方法完成类成员的赋值。Student 类增加的方法为:(4)定义一个Student 类,包含如下内容:成员
变量:学号、姓名、性别、数学、语文、外语成员方法:输入(完成成员变量的输入),总分,平均分编程实现 Student 类,并通过 p
ublic类中的main()调试,完成数据的输入(读入字符串时用next()) 和输出。在类SumNum 中定义方法 colnum
,以m行n列二维数组为参数,分别计算二维数组各列元素之和,并能返回;在主类中通过 main 方法调试,并输出所计算的结果。(6)(
实验目的:学习类的构造方法的作用和执行过程)编写一个 Java 应用程序,在程序中定义一个 Student 类,Student 类
有三个构造方法,分别对不同的属性进行初始化。(7)(实验目的:学习类的构造方法之间的调用,及关键字this的使用)编写一个Java
应用程序,在程序中定义一个 Employee类。Employee类有四个构造方法,分别对不同的属性进行初始化,有一个setAge
()方法能设置 age 属性值,有一个getAge()方法能返回 age 属性值。(8)(实验目的:掌握类的静态成员和非静态成员的
使用)编写一个程序,在程序中定义一个Ca类。Ca类中有静态成员和非静态成员,再定义一个Cb类,在Cb类中创建 Ca 类的对象。(9
)(实验目的:学习类的私有成员和公共成员的定义,以及类的私用成员的访问方法)在程序中定义一个Person 类,其中age 属性是一
个私有属性,并且范围为 5~20。然后根据所赋值年龄输出个人信息或报错。(10)(实验目的:类的继承的语法)编写一个java 程序
,在程序中定义一个PersonA 类,定义一个PersonA 类的子类 StudentA 类,并在主类E1的main()方法中生成
StudentA 类的对象。(11)(实验目的:掌握父类子类构造方法的继承关系,及调用方法)编写一个java 程序,在程序中定义
一个 PersonB 类,定义一个PersonB 类的子类 StudentB 类,再定义一个E2类,在main()方法中生成 St
udentB 类的对象。(12)(实验目的:学习类继承时方法的覆盖)编写一个Java程序,在程序中定义一个Animal类,再定义两
个Animal类的子类Bird、Fish类,在子类中覆盖父类的 play()方法。(13)(实验目的:编写程序,练习Java 中的
多态)编写程序实现乐手彈葵乐器。乐手可以弹葵不同的乐器从而发出不同的声音,可以弹葵的乐器包括二胡、铜琴和琵琶。实现思路:1定义乐器
类 Instrument, 包括方法 make Sound()2)定义乐器类的子类:二胡Erhu 和钢琴 Piano3)定义乐手类
Musician,可以弹奏各种乐器 play(Instrument i)4)定义测试类,给乐手不同的乐器让他弹奏(14)按要求完
成应用程序1)定义一个点Point 类,它包含横坐标x和纵坐标y两个私有属性,包含一个无参构造方法和一个有参构造方法。2)定义一个
圆Circle 类,它包含圆心center(类型为 Point 类) 和半径radius 两个私有属性,包含一个有参构造方法,完成
圆的参数设置;一个area()方法返回圆的面积:一个show()方法完成圆心、半径及面积的输出。3)定义 CircleTest 测
试类,要求通过键盘输入圆心和半径。(15) 声明并测试一个复数类,其方法包括输出 toString()及复数的加、减、乘运算。执行
结果如下:第一个复数是:3.0+(2.0i)第二个复数是:4.9+(3.0i)两复数和:7.0+(5.0i)两复数差:-1.0+(
-1.0i)两复数乘积:6.0+(17.0i)代码截图运行结果截图三、在本次实验中的问题和解决方法1 ~ 4题因为所用到的知识和代
码的重复性较高,按照注释提示都能写出来,没有问题。第五题计算二维数组各列元素之和并输出,对于这种题要先在脑子里构思一下需要创建哪些
方法和数组用来干什么,然后一点一点编织起来这张大网!比如这道题:先创建一个二维数组用来接收从此键盘输入的mn数列,这段代码在前面
的作业中写过,不陌生>>然后定义求各列数之和的方法sum(),最后结果是要列循环输出每列数的和,这里就需要构建一个一维数组(有n个
元素)用来对列中元素累加求和并输出,求和需要用行循环>>最后调用的是实例方法,先new sum(),然后用实例.sum(二维数组)
来调用,用一个循环输出即可(2)第七题的代码虽然很长,但考察的是最基本的赋值,this关键词和构造方法的调用(3)第八题的赋值涉及
到在静态方法中给非静态变量赋值和调用非静态方法,这两种均不能直接调用,需要new一个对象,通过实例化类的对象间接调用。(4)第九题
特殊的是对私有成员的访问,用提示给出的setAge()方法访问,然后根据返回的true / false 选择输出(5)第十题考察继
承,因为题目已经给出了Name的写法,参照很好写出Department,但重要的是在写的过程中多体会,做到烂熟于心(6)第十一题定
义成员变量、方法和创建对象并调用不难,重难点是在子类中调用父类的有参构造方法,用super(父类的参数)实现(7)第十二题考察类继
承时方法的覆盖,代码很好写,因为除内容外,子类中方法的名称、参数个数和类型都要与父类完全相同,本题中只有输出内容有略微差异。编译成
功后,覆盖语句所在一行会出现一个绿色的小三角标,代表覆盖父类中的方法。(8)第十三题这类题在写的时候一定要捋清各个类方法之间的关系
,明确要调用的对象名、方法名和参数,容易混乱(9)第十四题的代码很长,写写改改搞了好久,问题主要出现在show()方法和TestC
ircle类的书写上,因为x和y是私有成员变量,所以考虑到创建get方法,写着写着就开始混了,Point , Circle , c
enter该谁调谁,后面的创建对象也用了点时间才搞清楚(10)第十五题也是一个重难点,这段代码因为一开始没看清题,以为两复数的除法
运算也要求,但是除法运算比较复杂,所以整个输出的形式做了很大的改动,最终删删改改写了这个样子,看起来还是很复杂,有很多重复的地方,但是我目前还没有想到更好的改进方法。四、心得体会直观感受就是通过这些实验练习,还是学到了一些东西!学会了更多的解决数学/实际问题的方法,该定义/用到哪些方法有了大致的框架,就是细节(衔接调用)的地方还不足。在写的时候要真正动脑筋去想,对于编写中出现的错误有些还是不能独立解决,会犯一些很蠢的问题
献花(0)
+1
(本文系新用户52818...首藏)