配色: 字号:
实验03 类与类的特性
2023-10-19 | 阅:  转:  |  分享 
  
实验三 类与类的特性实验日期: 学号: 姓名: 一、实验目的1、掌握定义类、创建对象以及方法参数传递的语法;2、学会类的构造方法、类中方
法的重载、类的静态成员的定义和使用;3、理解类的封装、继承与多态,并掌握如何在实际编程中应用。二、实验内容完成如下任务或编写能够满
足如下条件的程序:调试教材对应章节的例题,确保自己可以做出每一道题。2、完成如下任务或编写能够满足如下条件的程序:(1)(实验目的
:学习类的一般结构与类的定义;学习类的成员变量和成员方法的声明格式。)在程序中定义一个Student类,并且按照要求补全Java程
序代码。(2)(实验目的:学习创建对象,调用对象的成员变量与成员方法。)编写一个程序,在程序中创建(1)题目中Student类的两
个实例,并访问它们的属性和方法,并输出如下结果。(3)(实验目的:学习方法调用时参数的传递)在第(2)题的基础上为Student类
增加一个方法,该方法能够接收参数并对Student类中的各个属性进行赋值。编写一个程序,通过调用新定义的方法完成类成员的赋值。St
udent类增加的方法为://将参数n、a、c、m、e赋值给属性name、age、chinese、math、english(4)定
义一个Student类,包含如下内容:成员变量:学号、姓名、性别、数学、语文、外语成员方法:输入(完成成员变量的输入),总分,平均
分编程实现Student类,并通过public类中的main()调试,完成数据的输入(读入字符串时用next())和输出。代码截图
:运行结果截图:(5)在类SumNum中定义方法colnum,以m行n列二维数组为参数,分别计算二维数组各列元素之和,并能返回;在
主类中通过main方法调试,并输出所计算的结果。代码截图:运行结果截图:(6)(实验目的:学习类的构造方法的作用和执行过程)编写一
个Java应用程序,在程序中定义一个Student类,Student类有三个构造方法,分别对不同的属性进行初始化。class St
udent{String name;int age;public Student() {System.out.println("S
tudent()构造方法被调用");}//定义一个Student类构造方法,该方法接收一个字符串参数,在方法体中,把该参数赋给na
me属性,并显示“Student(String newName)构造方法被调用”public Student(String new
Name) {this.name=name;System.out.println("Student(String newName)
构造方法被调用");}//定义一个Student类构造方法,该方法接收一个字符串参数与一个整形参数,在方法体中,把该字符串参数赋值
给name属性,把整形参数赋值给age属性,并且显示"Student(String newName,int newAge)构造方法
被调用"public Student(String newName,int newAge) {this.name=name;thi
s.age=age;System.out.println("String newName,int newAge)构造方法被调用")
;}}public class Hw7_2 {public static void main(String[] args) { /
/创建Student类的一个对象s1,不传入参数 Student s1=new Student(); //创建Student类的一
个对象s2,传入一个参数“张三”Student s2=new Student("张三"); //创建Student类的一个对象s3
,传入两个参数“李四”和15Student s3=new Student("李四",15); }}(7)(实验目的:学习类的构造方
法之间的调用,及关键字this的使用)编写一个Java应用程序,在程序中定义一个Employee类。Employee类有四个构造方
法,分别对不同的属性进行初始化,有一个setAge()方法能设置age属性值,有一个getAge()方法能返回age属性值。cla
ss Employee{private String name;private int age;private double sa
lary;public Employee(String newName,int newAge,double newSalary)
{//要求调用两个参数的构造方法,传入参数newAge和newSalarythis.age=newAge;this.salary=
newSalary;System.out.println("三个参数的构造方法被调用");name=newName;}public
Employee(int newAge,double newSalary) {//要求调用一个参数的构造方法,传入参数newSa
larythis.salary=newSalary; System.out.println("两个参数的构造方法被调用");age
=newAge;}public Employee(double newSalary) {//要求调用没有参数的构造方法this.g
etAge; System.out.println("一个参数的构造方法被调用");}public Employee() {Sys
tem.out.println("没有参数的构造方法被调用"); }void setAge(int newAge) {//设置ag
e属性的值为newAgethis.age=newAge; }int getAge() {return this.age; }}pu
blic class Hw7_3 {public static void main(String[] args) {Employe
e s1=new Employee("李四",30,8000);System.out.println("年龄是"+s1.getAg
e());s1.setAge(31);System.out.println("年龄是"+s1.getAge());}}思考:如果要
求输出对象的完整信息,应用如何编写代码?(8)(实验目的:掌握类的静态成员和非静态成员的使用)编写一个程序,在程序中定义一个Ca类
。Ca类中有静态成员和非静态成员,再定义一个Cb类,在Cb类中创建Ca类的对象。class Ca{int a;static int
b; //定义一个静态整型属性bpublic static void m1() {Ca s1=new Ca();//把属性a赋值
为100s1.a=100; b=100; //把属性b赋值为100,思考属性a和属性b的赋值方式为什么不同?}public voi
d m2() {a=50;b=50;}public static void m3() {m1(); //调用m1方法Ca s1=n
ew Ca(); //调用m2方法,思考m1、m2方法的调用为什么不同?s1.m2() ; }}class Hw7_4 {publ
ic static void main(String[] args) {Ca s1=new Ca();Ca s2=new Ca()
;Ca.b=2;s1.a=3;s1.b=3;s2.a=4;s2.b=4;s1.m3();System.out.println("C
a.b="+Ca.b) ; //显示Ca.b的值System.out.println(s1.a+s1.b) ; //显示s1的a、
b值System.out.println(s2.a+s2.b); //显示s2的a、b值}}(9)(实验目的:学习类的私有成员和公
共成员的定义,以及类的私用成员的访问方法)在程序中定义一个Person类,其中age属性是一个私有属性,并且范围为5-20。然后根
据所赋值年龄输出个人信息或报错。class Person{String name;private int age; //定义一个私
有整数属性agepublic boolean setAge(int newAge) {//如果newAge在[5,20]之间,将n
ewAge赋值给age并返回true;否则,返回falseif ( newAge>=5&&newAge<=20) {age=new
Age; return true; } else return false;}public int getAge(){//返回ag
e属性return age; }}public class Exe7_1 {public static void main(Str
ing[] args) {Person s1=new Person();Scanner in=new Scanner(System
.in);System.out.print("请输入姓名:");s1.name=in.next();//输入年龄并赋给s1,如果成
功,显示s1的姓名和年龄;否则,显示“年龄错误”System.out.print("请输入年龄:");if(s1.setAge(i
n.nextInt()))System.out.println("姓名"+s1.name+","+"年龄"+s1.getAge()
); elseSystem.out.println("年龄错误"); }}(10)(实验目的:类的继承的语法)编写一个java程序
,在程序中定义一个PersonA类,定义一个PersonA类的子类StudentA类,并在主类E1的main()方法中生成Stud
entA类的对象。class PersonA{private String name;public void setName(St
ring newName) {name=newName;}public String getName() {return name
;}}class StudentA extends PersonA{ //继承PersonA类private String dep
artment; // department成员变量的set、get方法public void setdepartment(Str
ing newdpartment) {department=newdpartment;}public String getdepa
rtment() {return department;}}public class E1 {public static void
main(String[] args) {StudentA s1=new StudentA(); s1.setName("张三"
); //调用setName方法,传入参数“张三”s1.setdepartment("计算机系");//设置s1的departme
nt为“计算机系” System.out.println(s1.getName()) ; //显示s1的姓名System.out.
println(s1.getdepartment()) ; //显示s1的系别}}(11)(实验目的:掌握父类子类构造方法的继承关
系,及调用方法)编写一个java程序,在程序中定义一个PersonB类,定义一个PersonB类的子类StudentB类,再定义一
个E2类,在main()方法中生成StudentB类的对象。/PersonB类包含name和age两个成员变量,权限为默认;包含
无参构造方法和有参构造方法(完成name的赋值);包含introduce方法完成“我是,今年岁”的自我介绍。/class
PersonB{String name;int age;public PersonB() {System.out.println(
"PersonB()被调用");}public PersonB(String newName) {name=newName;Sys
tem.out.println("PersonB(String newName)被调用");}public void introd
uce() {System.out.println("我是"+name+",今年"+age+"岁");}}class Studen
tB extends PersonB{//创建StudentB类的无参构造方法,能输出“StudentB()被调用”public
StudentB() {System.out.println("StudentB()被调用");}public StudentB(
String newName,int newAge) {//调用父类的有参构造方法,传入newName参数super (newNa
me); //将newAge赋值给age属性age=newAge; }}public class E2 {public stati
c void main(String[] args) {// 创建无参学生对象s1,创建有参学生对象s2,并完成两个学生的自我介绍
StudentB s1=new StudentB();StudentB s2=new StudentB("李四",20);s2.i
ntroduce();}}(12)(实验目的:学习类继承时方法的覆盖)编写一个Java程序,在程序中定义一个Animal类,再定义
两个Animal类的子类Bird、Fish类,在子类中覆盖父类的play()方法。class Animal{void play()
{System.out.println("我是动物,我会很多本领");}}//定义Animal类的子类Bird,覆盖Animal
类的play()方法,并在play()方法中输出“我是小鸟,我能飞翔”class Bird extends Animal{void
play() {System.out.println("我是小鸟,我能飞翔");}}class Fish extends Ani
mal{void play() {System.out.println("我是小鱼,我能游泳");}}public class E
3 {public static void main(String[] args) {Animal s1=new Animal()
;Bird s2=new Bird();Fish s3=new Fish();s1.play();s2.play();s3.pla
y();}}(13)(实验目的:编写程序,练习Java中的多态)编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音
,可以弹奏的乐器包括二胡、钢琴和琵琶。实现思路:1)定义乐器类Instrument,包括方法makeSound()2)定义乐器类的子类:二胡Erhu和钢琴Piano3)定义乐手类Musician,可以弹奏各种乐器play(Instrument i)4)定义测试类,给乐手不同的乐器让他弹奏代码截图:运行结果截图:(14)按要求完成应用程序1)定义一个点Point类,它包含横坐标x和纵坐标y两个私有属性,包含一个无参构造方法和一个有参构造方法。2)定义一个圆Circle类,它包含圆心center(类型为Point类)和半径radius两个私有属性,包含一个有参构造方法,完成圆的参数设置;一个area()方法返回圆的面积;一个show()方法完成圆心、半径及面积的输出。3)定义CircleTest测试类,要求通过键盘输入圆心和半径。代码截图:(15)声明并测试一个复数类,其方法包括输出toString()及复数的加、减、乘运算。执行结果如下: 三、在本次实验中的问题和解决方法四、心得体会
献花(0)
+1
(本文系zt5phwyy9yn...首藏)