当前位置:文档之家› 实验报告_实验5 类与类关系与抽象类(学生学号_姓名)

实验报告_实验5 类与类关系与抽象类(学生学号_姓名)

实验报告_实验5类与类关系与抽象类(学生
学号_姓名)
一、实验目的
1.理解继承的概念,掌握子类的创建方法;
2.熟悉成员变量的隐藏和方法覆盖;
3.掌握使用super访问被隐藏、覆盖的基类变量与方法;
4.理解继承的层次结构,熟悉构造方法的执行顺序;
5.理解访问修饰符的作用,熟悉访问修饰符对子类继承性的影响;
6.熟悉子类对象向上转型的实现方法和Object类的基本用法;
7.理解多态种类、意义、实现条件及基本应用;
8.理解内部类的作用、种类、实现方法及注意事项;
9.理解类与类之间的关系,了解单例模式的实现机理;
10.理解抽象类、抽象方法概念,熟悉它们的声明、使用。

二、实验内容与步骤
1.(基础题)根据题意及注释补充所缺少代码,然后运行程序
public Student(){}
public Student(String sno, String sname, int age) {
this.sname=sname;
this.sno=sno;
this.age=age;
} public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname= sname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
(1): class CollegeStudent extends Student
(2): getSno()
(3): getSname()
(4): getAge()
(5): major
(6): student.setAge(26)
(7): student.setSname("Jack")
(8): cstudent.setSname("Jerry")
(9): cstudent.setSno("1840700101")
(10): cstudent.setAge(23)
(11): cstudent.setMajor("物联网工程")
回答相关问题:
(1)程序中有多少个类,哪个是主类?哪个是基类?哪个是子类?
(2)程序中子类继承了基类哪些成员?基类对象如何给成员赋初值?子类对象又是如何给成员赋值?
(3)是否可以不定义Student类的无参构造器?
2.(基础题)分析、运行以下程序,并回答相关问题:
(1)分析程序,找出有问题的代码,请问出错原因是什么?
(2)修改程序中的错误。

3.(基础题)阅读、分析以下程序,并回答相关问题:
(1)程序中存在多少个类?这些类之间是什么关系?
(2)在继承的多层结构中,构造器是按怎样顺序来执行的?
4.(基础题)请按下列要求操作程序,并回答相关问题:
(1)根据题意和注释填充程序所缺代码;
(1):
(2):
(3):
(2)请仔细阅读分析程序,指出并修正程序中的错误;
问题:
(1)多态的含义是什么?什么是向上转型对象?
(2)Java中的多态包括哪几种类型?什么是运行时的多态?它实现的条件是什么?
(3)向上转型对象可以访问哪些成员?
5.(提高题)请先创建包pack1和pack2,然后根据下列程序代码在相应包中创建程序文件;分析程序,运行MainPack1.java,回答下列问题:
(1)运行结果说明了什么?
(2)为什么有些语句不能执行?
6.(提高题)先根据程序代码生成对应的Java文件,然后分析、运行程序,回答相关问题:
(1)从程序运行结果来看,per1、per2是否为同一对象?
(2)请将MainClass类的Person per2 = Person.getPerson();语句改为
Person2 per2 = Person2.getPerson();,再次运行程序;从结果判断,per1、per2是否为同一对象?
(3)请说明单例模式的实现机理。

7.(基础题)分析程序,写出程序运行结果;然后编译、运行程序,检验自己的分析结果是否正确:
预计运行结果:
实际运行结果:。

相关主题