实验七 类继承实验(I)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七 Java类继承实验(I)
§7.1实验目的、内容及性质
1.熟悉Java类的继承机制;
2.掌握Java类中成员变量和方法的访问控制;
3.熟悉方法或构造方法多态性;
实验性质:验证、必做
实验学时:2学时
§7.3实验指导
1、继承
1)、继承语法
class 子类名extends 父类{
....
}
注意:一般称子类或派生类,父类也称为基类或超类。
子类从父类继承了public 以及protected成员(属性和函数),父类成员被继承到子类访问属性不改变.
在Java中,任何一个类都是Object类的子类
2)、继承下构造函数
当子类实例化,首先调用父类构造函数,其次调用子类本身构造函数
public Person(int z){
this.z=z;
}
子类构造函数通过super()传实际参数给父类构造函数
public Student(int z){
super(z);//super()放在子类构造函数第一句可执行语句
....
}
3)、函数重载:在一个类中,函数名称相同,但是形式参数的个数或形参类型不同,这样一组构成函数重载.
public class Shape{
public double area(double r){
return Math.PI*r*r;
}
public double area(double w,double h){
return w*h;
}
public double area(double a,double b,double c){
double s=(a+b+c)/2;
return Math.Sqrt(s*(s-a)*(s-b)*(s-c));
}
}
4)、覆盖问题override 子类重写了一个从父类继承过来的函数与属性。
重写函数访问属性不低于继承函数
§7.4实践编程
1、理解、回答并整理以下问题(非常重要)
1)、为什么需要继承?提高代码的复用性。
子类从父类继承了什么成员?函数和一些公有的东西。
2)、如子类实例化,父类是否需要实例化?是的。
如果需要实例化,则子类实例化时,父类以及子类实例化顺序如何?当子类实例化时,系统会先将父类实例化,然后才是子类实例化。
3)、继承后的子类构造函数如何定义以及传参数给父类的构造函数?父类与子类构造函数调用顺序如何?为什么这样?当子类构造函数实例化,系统首先调用父类实例化构造函数,然后才是子类构造函数。
4)、Java类继承本质?继承不是赋值。
子类从父类继承成员函数、成员变量是否会另外创建副本?
2、实现一个名为Person的类和它的子类Employee
具体要求如下:
(1)Person类中的属性有:姓名name(String类型),地址address(String类型),电话号码telphone(String类型);
(2)Employee类中的属性有:办公室office(String类型),工资wage(double类型)(3)编写这两个类,及相应的测试代码。
各个属性赋值在构造函数中完成。
3、编写一个抽象的图形类Shape,里面有方法area()计算面积以及方法displayArea()显示面积,编写子类矩形类和三角型类分别实现两个方法,最后编写测试类,完成类的测试。
4、编写一个接口Shape,在接口中声明计算面积以及周长函数计算,编写该接口的实现类:矩形类和三角型类分别实现两个方法。
最后编写测试类,完成上述接口以及类的测试。
5、非编程题:作为本次实验的结束,请对Java学习做一个小结,含
1)评价一下自己这段时间学习Java效果?
2)如果Java难,难在什么地方,即什么地方没有弄清楚?
3)对Java教学有什么意见或建议?请指出。
这些只是对大家学习了解,取到对今后教学的一个促进作用。
不针对任何个人。
大家可以写在本次实验的小结中。