预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第八章类的继承和多态 教学目的: 深刻理解类的继承 教学内容: 1、类的继承和实现 2、构造器的调用 3、防止类的继承 一、类的继承和实现 所谓继承就是在已经存在类的基础上再扩展新的类。已经存在的类我们称父类、超类、基类。新产生的类,我们称子类、派生类。子类拥有父类的所有特性。当然我们也可以在子类中添加新的方法和成员变量,这些新添加的方法和成员变量仅仅属于子类。 在Java中通过关键字“extends”来实现。 比如在学生类中,有一种特殊的学生就是学生干部,他们出来拥有和普通学生一样的方法和属性之外,有的有一个职务描述(Duty)。 我们定义学生管理类ClassManger,它拥有父类的所有的方法和属性。 一般来讲,应该把相对通用的方法都放在父类中,只有更具体和专门的方法放在子类中。 1、对于学生干部而言,我们要添加一个属性就可以了 privateStringduty=””; 2、但是student里的print()就不能满足我们的ClassMange的要求了。而且student的构造方法也不能直接用来ClassMange上。 那么我们怎么定义ClassMange()和print()呢?如果重新写很麻烦,可不可以在父类方法的基础上修改呢?只要使用关键字super就可以了。 this:一个对象的引用。 super:是用来告诉编译器调用父类的方法的关键字。 代码如下: classschool { publicstaticvoidmain(String[]args) { student[]stu=newstudent[3]; stu[0]=newClassMange("章三","2009001","班长"); stu[1]=newstudent("李四","2009002"); stu[2]=newstudent("王五","2009003"); /* for(inti=0;i<stu.length;i++) {stu[i].print(); }*/ stu[0].setSex("男"); stu[0].setSpeci("软件技术"); stu[0].print(); } } classstudent {privateStringname;//定义学生姓名 privateStringID;//定义学生学号 privateStringsex="";//定义学生性别 privateStringspeci="";//定义学生专业 //构造方法 publicstudent(Stringname,StringID) {this.name=name; this.ID=ID; } publicstudent(Stringname,StringID,Stringsex,Stringspeic) {this.name=name; this.ID=ID; this.sex=sex; this.speci=speic; } //访问器 publicStringgetName() {returnname; } publicStringgetID() {returnID; } publicStringgetSex() {returnsex; } publicStringgetSpeci() {returnspeci; } //设置器 publicvoidsetSex(Stringsex) {this.sex=sex; } publicvoidsetSpeci(Stringspeci) {this.speci=speci; } //打印方法 publicvoidprint() {System.out.println("学生学号:"+ID+"\n学生姓名:"+name); if(!sex.equals("")) System.out.println("性别="+sex); if(!speci.equals("")) System.out.println("专业="+speci); } } classClassMangeextendsstudent {privateStringduty=""; publicClassMange(Stringname,StringID,Stringduty) {super(name,ID);//调用父类的构造方法,初始化相关字段 this.duty=duty; } publicStringgetDuty() {returnduty; } publicvoidprint() {super.print(); if(!duty.equals("")) System.