资源描述:
《动物类派生——继承与多态》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章动物类派生——继承与多态能力目标:理解类的继承,能编写类及其派生子类。理解多态含义,理解上转型对象,能在子类中重写父类的同名方法。能运用继承与多态编写人类派生学生类、动物类派生马类等程序。内容介绍8.1任务预览8.2继承与派生8.3用protected声明受保护成员8.4关键字super8.5类类型变量赋值8.6多态性8.7本章小结8.8实训8:人类派生与动物类派生8.1任务预览本章实训程序运行结果:8.2继承与派生计算机世界与自然界一样,类之间也有继承和派生关系。运用继承与派生能达到代码重用、简化编程的目的。语法:[public][ab
2、stract][final]class子类名extends父类{...}类的单一继承关系形成了清晰的层次结构,树状图如下:【例8-1】编写人类。再编写继承人类的学生类,学生类还拥有学号字段和学习方法。构造人类和学生类的对象,输出有关信息。classHuman1{//人类protectedStringname;protectedcharsex;protectedintage;publicHuman1(Stringname,charsex,intage){this.name=name;this.sex=sex;this.age=age;}publi
3、cvoidthink(){//思考方法System.out.println(name+"在思考...");}}classPupil1extendsHuman1{//继承人类的学生类protectedStringstuNo;//学号publicPupil1(StringstuNo,Stringname,charsex,intage){super(name,sex,age);this.stuNo=stuNo;}publicvoidlearn(){…}//学习方法}publicclassExample1{publicstaticvoidmain(St
4、ring[]args){Human1person=newHuman1("林冲",'男',30);person.think();System.out.println();Pupil1aPupil=newPupil1("001","李明",'男',6);aPupil.think();aPupil.learn();}}8.3用protected声明受保护成员关键字protected可修饰类的字段和方法,这些成员能被所有派生子类直接或间接继承。protected修饰的类成员,还能被类所在的包访问。在例8-1中,使用了关键字protected修饰人类Hu
5、man1的name、sex和age字段。虽然protected可以修饰字段,但类的封装性要求除了final常量字段外,其它字段一律应为private。故不可滥用protected修饰字段。【例8-2】按照类封装性要求改写例8-1,以保证字段为private。classHuman2{privateStringname;privatecharsex;privateintage;publicHuman2(Stringname,charsex,intage){…}protectedStringgetName(){…}publicvoidthink(){
6、…}}classPupil2extendsHuman2{privateStringstuNo;publicPupil2(…){…}publicvoidlearn(){…}}publicclassExample2{publicstaticvoidmain(String[]args){Human2person=newHuman2("林冲",'男',30);person.think();…Pupil2aPupil=newPupil2("001","李明",'男',6);aPupil.think();aPupil.learn();}}8.4关键字sup
7、er8.4.1用super调用父类构造方法类如果没有显式声明构造方法,则自动生成无参数的默认构造方法。子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且super必须是子类构造方法中的头一条语句。【例8-3】编程,验证执行子类构造方法会自动调用父类的构造方法。classHuman3{publicHuman3(){System.out.println("构造了一个人");}}classPupil3extendsHuman3{publicPupil3(){//super
8、();//相当于执行了本语句System.out.println("构造了一个学生");}}publicclassExample3{publicsta