实验六 继承和重载1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六继承和重载
(设计性4学时)
1、实验目的与要求:
掌握类的继承(方法和属性)
1 类的继承性
新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。
Java 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。
1.1创建将被继承的类
(1) 程序源代码如下。
public class EXP3_7
{
protected String xm; //具有保护修饰符的成员变量
protected int xh;
void setdata(String m,int h) //设置数据的方法
{
xm =m;
xh = h;
}
public void print() //输出数据的方法
{
System.out.println(xm+", "+xh);
}
}
(2) 编译源程序。
1.2创建将被继承的类
(1) 程序功能:通过EXP3_7类产生子类EXP3_8,其不仅具有父类的成员变量xm(姓名)、
xh(学号),还定义了新成员变量xy(学院)、xi(系)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。
(2) 程序源代码如下。
class EXP3_8 extends EXP3_7{
protected String xy;
protected String xi;
public static void main(String args[]){
EXP3_7 p1 = new EXP3_7();
p1.setdata("李四",12321) ;
p1.print();
EXP3_8 s1 = new EXP3_8() ;
s1.setdata("张三",12345); //调用父类的成员方法
s1.xy="成都信息工程学院"; //访问本类的成员变量
s1.xi="计算机系"; //访问本类的成员变量
s1.print();
System.out.print(s1.xm+", "+s1.xy+", "+s1.xi);
}
}
2 定义mypoint类,其中域为x,y和无参构造函数(屏幕输出“调用point类的无参构造方法”),定义一个含2个参数的构造函数初始化域;定义方法设置坐标,定义方法得到坐标,定义toString方法返回点坐标的字符串显示。
定义mycirclre类继承mypoint类,增加域半径r,定义无参构造函数(屏幕输出“调用mycircle 类的无参构造方法”),定义一个含3个参数的构造函数初始化域;定义方法设置半径,定义方法返回点坐标的字符串显示,定义一个方法求圆面积。
定义mysphere类继承mycircle类,增加域坐标z,定义无参构造函数(屏幕输出“调用类mysphere的无参构造方法”),定义一个含4个参数的构造函数初始化域;定义方法返回点坐标的字符串显示,定义一个方法求球表面积,定义一个方法求球体积。定义方法设置z 坐标。
编写测试类创建mycircle实例,并显示其相关信息和面积;修改之并显示修改后的信息和面积;编写测试类创建mysphere实例,并显示其相关信息和表面积及体积;修改之并显示修改后的信息,表面积和体积。
3)有类如下定义
class Person // 定义Person类
{ protected String name; //姓名
protected String sex; //性别
protected int age; //年龄
public void register(String n,String s,int a) //设置数据成员
{ name=n; sex=s; age=a; }
String getName()//获取姓名
{ return name; }
String getSex()//获取性别
{ return sex; }
int getAge()//获取年龄
{ return age; }
public void showMe()//显示人员信息
{
System.out.println("姓名:"+name+",性别:"+sex+",年龄:"+age); }
}
定义class Student 继承Person 类。增加子类自己的属性和方法
private String department;//系别
private String specialty;//专业
public void studentRegister(String n,String s,int a,String dep,String spe) {
//设置数据成员
register(n,s,a);____________;____________________;
}
String getDepartment()//获取学生所在系
{ return department; }
String getSpecialty()//获取学生所学专业
{return specialty; }
public void showStudent()//显示学生类数据成员,要求显示所有信息
{ }
}
在主程序中编写测试类生成自己,并显示所有信息。自行设计方法验证方法的覆盖。自行设计构造函数验证子类和父类构造函数的继承。
3、实验步骤(略)
4、实验报告
实验六实验报告
姓名_________ 学号________________ 评阅人__________ 成绩_________