浙江大学城市学院实验报告
课程名称:面向对象程序设计
实验项目名称:类继承与接口(三)
学生姓名专业:学号:
实验地点:实验日期:年月日
【实验目的】
1.巩固Java类继承的相关知识
2.理解对象上转型技术的优点和用途。
3.掌握接口的特点
4.接口与抽象类的异同之处
【实验内容】
一、类继承相关知识强化
1. 执行以下程序,给出执行Bbb的结果,并说明指出类Bbb的this.i与super.i的含义(即它们都对应哪个变量)。
class Aaa{
int i;
Aaa(int a){ i = a;}
}
class Bbb extends Aaa{
int j,k;
Bbb(int i){
super(i);
j = this.i;
k = super.i;
}
public static void main(String[] args){
Bbb b = new Bbb(18);
System.out.println(b.j +"\t" + b.k);
}
}
执行Bbb的结果:
this.i与super.i的含义(即它们都对应哪个类中定义的变量):
都对应Aaa类中的变量。
2.接着上面例子,将类Bbb改写为以下代码,请写出程序运行结果,并说明这个例子与上面例子的区别。
class Bbb extends Aaa{
int i= -1,j= -1,k= -1; //比上面例子增加一个实例变量i;
Bbb(int i){
super(i);
j = this.i; //本语句含义是:Bbb类中的变量i的值赋给j
k = super.i; //本语句含义是:访问Aaa类中的变量i并将值赋给k
}
public static void main(String[] args){
Bbb b = new Bbb(18);
System.out.println(b.j +"\t" + b.k);
}
}
执行Bbb的结果:
-1 18
这个例子与上面例子的区别:
在Bbb类中也定义了变量i,将Bbb的直接超类Aaa中的变量i给覆盖掉了。
3.对以下程序,给出执行Bbb的结果,并分析Bbb中main方法中a.show(1), b.show(1),
c.show(1)的结果。
class Aaa{
void show(){
System.out.println("Aaa中定义的show()");
}
void show(int i){
System.out.println("Aaa中定义的show(int i)");
}
}
class Bbb extends Aaa{
void show(){
System.out.println("Bbb中定义的show()");
}
Aaa a = new Aaa();
Bbb b = new Bbb();
Aaa c = new Bbb();
a.show(1);
b.show(1);
c.show(1);
}
}
执行Bbb的结果:
上面a.show(1)执行了那个类中定义的方法: Aaa类
上面b.show(1);执行了那个类中定义的方法: Aaa类
上面c.show(1)执行了那个类中定义的方法: Aaa类
分析:类Bbb中的方法覆盖的的是类Aaa中的void show()方法,并未覆盖void show(int i),而 a.show(1);b.show(1);c.show(1);都是执行了Aaa类中的void show(int i)方法。a.show(1)是直接访问超类Aaa中的void show(int i)方法,b.show(1)是子类Bbb继承了类Aaa中的void show(int i)方法,从而执行,c.show(1)中c是上转型对象,子类对象的引用向上转型为超类类型,从而执行void show(int i)方法。
4. 对以下程序,给出执行Bbb的结果,并分析这个例子结果与前面第4个例子,你可以得出什么结论。
class Aaa{
int i = 10;
static void show(){
System.out.println("Aaa中定义的show()");
}
}
class Bbb extends Aaa{
int i = 20;
static void show(){
System.out.println("Bbb中定义的show()");
}
Aaa a = new Aaa();
Bbb b = new Bbb();
Aaa c = new Bbb();
a.show();
b.show();
c.show();
((Bbb)c).show();
System.out.println(c.i); //考虑此处
System.out.println(((Bbb)c).i); //考虑此处
}
}
执行Bbb的结果:
((Bbb)c).show()执行结果: Bbb中定义的show()
System.out.println(c.i)执行结果: 10
System.out.println(((Bbb)c).i)执行结果: 20
分析与结论:
A aa c = new Bbb();中c为上转型对象,将子类对象的引用转为超类类型,c本是子类Bbb 的对象,但通过向上转型,c.i引用的是超类的变量,同时也可以通过(Bbb)c)的方式将c强制向下转型,则( (Bbb)c).i访问的是子类Bbb的成员变量。
二、程序分析思考
以下是例5.22的部分关键代码,请分析思考以下问题:
(1)Student类中设计抽象方法cost会带来什么好处?
(2)Student类的compareCost方法可以用于比较哪些类型的对象?如果没有设计抽象方法cost,那么会发生什么问题?
注意:分析重点是软件设计的通用性考虑。
abstract class Student {//定义学生对象的抽象超类
private String name;
public Student(String name){ https://www.wendangku.net/doc/128131848.html, = name; }
public abstract double cost();//声明抽象方法,表示学习费用
public double compareCost(Student otherStudent){//当前对象与参数对象的费用比较return this.cost() - otherStudent.cost(); //返回大于、等于、小于零的数字
}
public String getName(){return https://www.wendangku.net/doc/128131848.html,; }
public void setName(String name){ https://www.wendangku.net/doc/128131848.html, = name; }
}
class StudentCostTool{
static double sumCost(Student[] students){//计算students所有学生的费用之和double sum = 0;
for(int i=0;i sum = sum + students[i].cost(); return sum; } static double averageCost(Student[] students){//计算students学生的平均费用return sumCost(students)/students.length; } static double maxCost(Student[] students){//计算students所有学生的费用最大值if(students.length == 1) return students[0].cost(); int index = 0; for(int i=0;i if(students[index].compareCost(students[i]) < 0) index = i; return students[index].cost(); } } (1)Student类中设计抽象方法cost会带来什么好处? 答:由于不同的学生费用不同,无法做到学费的统一通用,因此设计抽象方法cost,那么就可以在不同学生类中调用抽象方法cost在其中用不同的代码返回相应学生的学费。 (2)Student类的compareCost方法可以用于比较哪些类型的对象?如果没有设计抽象方法cost,那么会发生什么问题? 答:用于比较哪些类型的对象当前对象,上转型对象及其子类对象。 如果没有设计抽象方法cost,那么compareCost方法就只能在Student的子类中设计了,即每个子类都编写一个compareCost方法,这样做就会导致相同代码的多处重复。 三、接口与抽象类实验 1. 编译下面的程序, 指出错误. interface A{ //语句1 void show(); void show(int i){ System.out.println("A show()"); } } (1) 是否出错? 出错原因? 是,接口A中必须为抽象方法,不能定义非抽象方法,而上面的void show(int i)为非 抽象方法,应该为“void show(int i);”,不能有实现代码。 (2) 如果将上面语句1的interface改为abstract class , 编译是否出错? (提示: 注意abstract修饰符) 出错。当interface改为abstract class时,说明A为抽象类,那么抽象类A中的抽象方法void show();应该在前面加上abstract修饰符。 (3)根据上面的(1)和(2), 可以看出接口与抽象类的什么区别? 接口中只能声明抽象方法,而抽象类中既能声明抽象方法,又能声明非抽象方法,但是抽象类中的抽象方法前面必须加上abstract修饰符,而接口则不需要,因为它被默认为抽象方法。 2. 编译下面的程序, 指出错误. interface IA{ void show(); void show(int i); } class A implements IA{ //语句1 public void show(int i){ //语句2 System.out.println("A show()"); } } (1) 上面的程序编译是否出错? 出错原因? 是,A是接口IA的实现类,它继承了接口IA的所有成员,但类A中只实现了接口IA中的无参抽象方法show,但还有一个有参的抽象方法show没有实现,所以必须将类A声明为抽象类,即在class A前面加上修饰符abstract。 (2) 如果将语句1中的class 改为abstract class, 编译是否出错? 为何? 不出错。A是接口IA的实现类,它继承了接口IA的所有成员,但类A中只实现了接口IA 中的无参抽象方法show,但还有一个有参的抽象方法show没有实现,所以必须将类A声明为抽象类,即在class A前面加上修饰符abstract。 (3) 如果将语句2中的public删除, 编译是否出错? 为何? 是,因为接口成员的默认访问控制权限是public,而类成员的默认访问控制权限是包权限,所以必须声明为public访问控制 3. 编译下面的程序, 回答问题 abstract class A { public void show(){ System.out.println("A show()"); } } class AbstractClassTest{ public static void main(String[] args){ A a = new A(); } } (1) 编译是否出错? 是。 (2) 类A的定义编译是否出错? 说明什么?(考虑抽象类中是否可以没有抽象方法) 是,说明抽象类是禁止对象创建的,抽象类中是可以没有抽象方法的。 4. 编译下面的程序, 回答问题 abstract class A{ static abstract void show(); } class B extends A{ public static void main(String[] args){ show(); } } (1) 上面的程序编译是否出错? 是。 (2) 如何改正? 改为abstract class A{ public static void show(){ System.out.println("A show()"); } } class B extends A{ public static void main(String[] args){ show(); } } 5. 编译下面的程序, 回答问题 interface IA{ int i; void show(); } (1) 上面的程序编译是否出错? 是。 (2) 如果出错, 错在何处? i应该是一个静态常量,可以是int i = 100; 6. 编译下面的程序, 回答问题. interface IA{ int i=100; void show(); //代码1 } interface IB { int j=100; void show(int a); //代码2 } class A implements IA,IB{ public void show(){}//代码3 public void show(int a){} //代码4 } (1) 上面的程序编译是否出错? 没有错。 (2) 代码1和代码3的区别是什么? 同样, 代码2与代码4的区别是什么? 区别是代码1是抽象方法show的声明,而是show的实现,代码2与代码4同上。 7. 编译下面的程序, 回答问题. abstract class A{ void show1(){} } abstract class B{ void show2(){ } } class C extends A,B{ void show3(){} } (1) 上面的程序编译是否出错? 是。 (2) 如果出错, 错在何处? 错在类继承是单重继承,只能直接指定一个超类,但上述代码中类C制定了2个直接超累。 8. 编译下面的程序, 回答问题. final class A{ void show(){} } class B extends A{ void show2(){} } (1) 上面的程序编译是否出错? 是。 (2) 如果出错, 错在何处? 错在class A前面多加了final修饰符。Final类不可继承,不能有子类,而上述代码中是有子类的。 9. 编译下面的程序, 回答问题. class A{ final void show(){} } class B extends A{ void show(){ System.out.println("aaa"); } } (1) 上面的程序编译是否出错? 是。 (2) 如果出错, 错在何处? 多加了final修饰符,final方法不可继承,在子类中不可用。 10. 编译下面的程序, 回答问题. interface IA{} //没有定义任何成员 class B{} //没有定义任何成员 (1) 上面的程序编译是否出错? 没有出错。 (2) 如果没有出错, 你可以得出什么结论? 接口与类的声明相似。 11.编译并运行下面程序,分析运行结果 interface IStudent{ void showDetail(); } class Student implements IStudent{ String name; int age; Student(){} Student(String name,int age){ https://www.wendangku.net/doc/128131848.html, = name; this.age = age; } public void showDetail(){ System.out.println(name+"\t"+age); } } class GraduateStudent implements IStudent{ String name; int age; String major; GraduateStudent(){} GraduateStudent(String name,int age,String major){ https://www.wendangku.net/doc/128131848.html, = name; this.age = age; this.major = major; } public void showDetail(){ System.out.println(name+"\t"+age+"\t"+major); } } class InterfaceTest2{ static void showStudent(IStudent iStud){ //代码1 iStud.showDetail(); } public static void main(String[] args){ Student a = new Student("张三",10); GraduateStudent b = new GraduateStudent("李斯",10,"cs"); showStudent(a); showStudent(b); } } (1) 执行类InterfaceTest2, 输出结果是什么? 张三 10 李斯 10 cs (2) 请注意上面的代码1, 这是否说明如果某个类实现了某个接口所申明的方法, 那么可以通过 该接口类型变量(而不是类引用变量)来调用所实现的方法? 是。 实验报告要求 将编程题源程序、运行结果,以及实验中遇到的问题和解决问题的方法,写在实验报告上。 实验目的与要求: 1.掌握类的继承与派生关系以及实验方法,理解类的层次结构。 2.掌握派生类构造函数初始化基类成员和对象成员的方法。 3.掌握内联函数和默认函数。 4.掌握赋值兼容原则,掌握派生类的复制构造函数和赋值运算符的定义。 实验过程及内容: 1.实践教程实验二十二P81范例:定义一个继承与派生关系的类体系,在 派生类中访问基类成员。 ①先定义一个点类,包含x,y坐标数据成员,显示函数和计算面积的函数成员; ②以点为基类派生一个圆类,增加表示半径的数据成员,重载显示和计算面积的函数; ③定义一个线段类,以两个点类对象作数据成员,定义显示、求面积及长度函数,线段类采用聚合方式,因为有两个端点,不能用派生。 编程测试所定义的类体系。 本实验教程中有源码,请自行运行,体会和熟悉继承与派生的基本概念及实现方法,掌握派生类构造函数初始化基类成员和对象成员的方法等。2. 实践教程P83编程:多层派生练习,由上题Point类和Circle类继续派生出Cylinder类。要求计算圆柱的底面积、侧面积、全面积和体积。 请编写所有完整的成员函数,并编写主函数进行验证。 数据处理 1. (1) (2)j结果报错,原因是派生类中的成员函数不能访问基类中的私有成员。(3)在Line类中添加两个数据成员。 2. #include C++语言程序设计实验答案_继承与派生 实验07 继承与派生(4学时) (第7章继承与派生) 一、实验目的 二、实验任务 7_1 声明一个基类Animal。 有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。 7_2 声明一个基类BaseClass。 有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 7_3 声明一个车(vehicle)基类。 具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。 7_4 以实验6中的People(人员)类为基类。 派生出student(学生)类,添加属性:班号char classNo[7]; 派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。 从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser; 从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。 类之间的关系如图7-1所示。 图7-1 类图 计算机组成原理与接口技术 课程设计实验报告 学院:计算机科学与工程 专业:计算机科学与技术 班级:计科二班 学号: 姓名: 指导老师: 评分: 2016年12月28日 实验一验证74LS181运算和逻辑功能 1、实验目的 (1)掌握算术逻辑单元(ALU)的工作原理; (2)熟悉简单运算器的数据传送通路; (3)画出逻辑电路图及布出美观整齐的接线图; (4)验证4位运算功能发生器(74LS181)组合功能。 2、实验原理 ALU能进行多种算术运算和逻辑运算。4位ALU-74LS181能进行16种算术运算和逻辑运算。 74ls181芯片介绍: 该芯片总共由22个引脚,其中包括8个数据 输入端(~A0、~A1、~A2、~A3,~B0、~B1、~B2、 ~B3,其中八个输入端中A3和B3是高位),这八 个都是低电平有效。还包括S0、S1、S2、S3这四 个控制端,这四个控制端主要控制两个四位输入 数据的运算,例如加、减、与、或。CN端处理进 入芯片前进位值,M控制芯片的运算方式,包括 算术运算和逻辑运算。F0、F1、F2、F3是四个二 进制输出端,以一个四位二进制形式输出运算的 结果。CN4记录运算后的进位。 3、实验内容 实验电路图: 4、总结及心得体会 本实验通过一个设计一个简单的运算器,使我熟悉了Multisim软件的一些基本操作方法,并掌握了一些简单的电路设计与分析的能力,并对我做下一个运算器的实验有一定的帮助。因为是之前实验课做过的实验,再次做起来过程比较流畅,没有遇到什么大的问题,实验的测试结果与预期的一致。 该芯片总共由22个引脚,其中包括8个数据输入端(~A0、~A1、~A2、~A3,~B0、~B1、~B2、~B3,其中八个输入端中A3和B3是高位),这八个都是低电平有效。还包括S0、S1、S2、S3这四个控制端,这四个控制端主要控制两个四位输入数据的运算,例如加、减、与、或。CN端处理进入芯片前进位值,M控制芯片的运算方式,包括算术运算和逻辑运算。F0、F1、F2、F3是四个二进制输出端,以一个四位二进制形式输出运算的结果。CN4记录运算后的进位。其中AEQB、~P和~G这三个端口与本实验无关,所以这里不做额外介绍。 实验三派生类与继承 一、实验目的 1、学习类的继承,能够定义和使用类的继承关系。 2、学习派生类的声明与定义方法。 3、掌握类的定义和对象的声明。 4、熟悉公有派生和私有派生的访问特性。 5、掌握派生类构造函数和析构函数的执行顺序。 6、掌握利用访问声明调整基类成员在派生类中的访问属性。 二、试验内容 1、下面的程序可以输出ASCII字符与所对应的数字的对照表。修改下列程序,使其可以输出字母a到z(或任意两个字符间)与所对应的数字的对照表。class table { public: table(int p) { i=p; } void ascii(void); protected: int i; }; void table::ascii(void) { int k=1; for (;i<127;i++) { cout< c=m; } void print(void); protected: char *c; }; void der_table::print(void) { cout< 统计学实验报告 一、实验主题:大学生专业与实习工作的关系 二、实验背景: 二十一世纪的今天大学生已是一个普遍的社会群体,高校毕业人数日益增加,社会、企业所提供的职位日益紧张,大学生就业问题是当今社会关注的焦点。面对日益沉重的就业压力,越来越多的大学毕业生选择了企业需求的职业,而这种职业与自己在校所学专业根本“无关”或相去甚远,大学毕业生就业专业不对口的现象非常严重。专业对口是个广义的概念,就是说你所学的专业与你所作的工作相关,比如你专业是会计,工作后你到了一个企业做会计,或者到银行做柜员,这都是与经济相关的,这就是对口。如果你学机械设计,但工作后却做了统计员,业务员等于你所学专业无关的工作,这就叫专业不对口。专业不对口导致毕业生所学知识没有用武之地,所以这是一种人力资源的浪费。 三、实验目的: 大学生就业专业不对口是客观存在的问题,我们研究此问题有这几点目的:①了解当代大学生实习工作与专业是否对口的情况,当代大学生对工作与专业不对口现象的态度。②分析大学生就业结构和 专业对口问题,了解当今大学生专业对口情况,为以后大学生选择专业、选择工作岗位提供有效的信息和借鉴。③寻找导致专业不对口的原因,以减少社会普遍存在的人力资源的浪费。 四、实验要求:就相关问题收集一定数量的数据,用EXCEL进行如下 分析:1进行数据筛选、排序、分组;2、制作饼图并进行简要解释;3、制作频数分布图,直方图等并进行简要解释。 五、实验设备及材料:计算机,手机,EXCEL软件,WORD软件。 六、实验过程: (一)制作并发放调查问卷。 (二)收回并统计原始数据:收回了102名大学生填写的调查问卷,并对相关数据进行统计。 (三)筛选与实验相关问题: 1.您的性别( ): A. 男B.女 新疆农业大学机械交通学院 实习(实验)报告纸 班级:机制072 学号: 073731234 姓名:唐伟 课程名称:微机原理及接口技术实习(实验)名称: DEBUG软件的使用 实验时间: 6.22 指导教师签字:成绩: —、实验目的 1.学习DEBUG软件的基本使用方法。 2.掌握8088/8086的寻址方式。 3.掌握数据传送、算术运算逻辑运算等类指令的基本操作。 二、实验内容与步骤 实验内容: 修改并调试以下程序,使之完成30000H开始的内存单元中存入31个先自然递增然后有自然递减的数据(00H~0F~00H)的功能。程序从CS:0100H开始存放。调试完成后程序命名为PCS.EXE并存盘。 实验步骤: (1)用A命令输入程序; (2)用反汇编U命令显示程序及目标码; 存盘程序命令为PCS1.EXE; 三、思考题 1.EXE文件程序的第一条可执行指令的IP等于多少? 答:EXE文件程序的第一条可执行指令的IP等于0010 。 2.在DEBUG环境下显示的程序和数字是什么形式?标号又是什么形式? 答: DEBUG把所有数据都作为字节序列处理。因此它可以读任何类型的文件。DEB UG可以识别两种数据: 十六进制数据和ASCⅡ码字符。它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。DEBUG总是用四位十六进制数表示地址。用两位数表示十六进制数据。不支持标号。 3.试述本次实验中你学会的DEBUG命令? 答:本次试验我学会了汇编命令(A命令)、.反汇编命令(U命令)、显示当前环境和寄存器内容(R命令、以十六进制和ASCII码形式显示内存单元内容(D命令) 3.1实验目的 1.掌握多重继承和派生类的方法 2.掌握初始化基类成员的方法 3.掌握定义虚基类的方法 3.2实验内容与步骤 1.上机实验题一 定义一个日期(年、月、日)的类和一个时间(时、分、秒)的类,并由这两个类派生出日期和时间类。主函数完成基类和派生类的测试工作。 ⑴分析 定义一个描述日期的类,构造函数完成年、月、日的初始化,包含一个重新设置日期的成员函数,一个获取日期的成员函数。该类可定义为: class Date{ int Year,Month,Day; //分别存放年、月、日 public: Date(int y=0, int m=0,int d=0) { Year= y; Month = m; Day = d; } void SetDate(int ,int ,int ); void GetDate(char *); }; 函数SetDate完成数据成员的赋初值。函数GetDate要将整数年、月、日变换成字符串后,存放到参数所指向的字符串中。把一个整数变换成字符串可通过库函数: char * _itoa(int a , char *s, int b); 来实现,参数a为要变换的整数,b为数制的基数(如10,表示将a转换为对应的十进制的字符串),转换的结果存放到s所指向的字符串中。函数返回变换后字符串的首指针。该成员函数可以是: void Date::GetDate(char *s) { char t[20]; _itoa(Year,s,10); //将年变换为字符串表示 strcat(s,"/"); //年、月、日之间用“/”隔开 _itoa(Month,t,10); //将月变换为字符串表示 strcat(s,t); //将年、月字符串拼接 strcat(s,"/"); _itoa(Day,t,10); strcat(s,t); //将年、月、日拼接成一个字符串} 定义描述时间的类与描述日期的类类同,然后用这二个类作为基类,公有派生出描述日期和时间的类。 简化的参考程序如下: #include 微机汇编程序及接口技术实验报告 汇编程序实验: 一、实验目的 1、熟悉汇编程序调试过程 2、掌握算术运算指令运用 3、掌握分支程序的编程和调试方法 二、实验设备 80X86微型计算机 三、实验内容 1、编程并调试显示“Hello Word!”字符串的汇编程序 TITLE HELLO DA TA SEGMENT STR DB'Hello World!$' DA TA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STR MOV AH,9H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 2、A、B、C、D、W是互不相等的在数据段中定义的16位有符号数,并假设加减运算不产生溢出。编写一个完整段定义的汇编语言程序,计算W=(A+B)×(C—D)。 title asmprogram1_1 DA TA SEGMENT A DW 1H B DW 3H C DW 4H D DW 2H W DW 2 DUP(?) DA TA ENDS ; CODE SEGMENT ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV AX,A ADD AX,B MOV BX,C SUB BX,D IMUL BX MOV W,AX MOV W+2,DX MOV AH,4CH INT 21H CODE ENDS END START 3、设X、Y为在数据段中定义的有符号字变量。编写一个完整段定义的汇编语言程序(包含必要的伪指令,给出必要的注释)完成以下操作:若0 内蒙古科技大学 面向对象的程序设计 实验报告 一、实验目的 1.理解继承的含义以及声明; 2.理解共有派生、私有派生和保护派生的含义以及使用; 3.理解单派生类中构造函数和析构函数的调用顺序。 二、实验环境 编译器:Visual C++ 6.0. 操作系统:Windows 7 旗舰版 三、实验内容 2.1练习(一): 1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。 #include "iostream.h" class CBase { public: CBase(int a) :a(a) {继承和派生实验报告
C++语言程序设计实验答案_继承与派生教学提纲
计算机组成原理与接口技术实验报告
c++实验3 派生类与继承1
统计学实验报告【最新】
微机原理与接口技术实验报告
实验3 继承和派生类的应用
汇编程序及接口技术实验报告
内蒙古科技大学面向对象的程序设计实验8 继承(一)