欢迎来到天天文库
浏览记录
ID:52769855
大小:220.60 KB
页数:55页
时间:2020-03-07
《Java程序设计项目教程 教学课件 作者 郭庚麒 周江_ 06章 继承和多态机制.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章继承和多态机制面向对象语言的三大特征是封装、继承和多态,通过本章的学习,读者应该达到以下目标:【学习目标】理解继承和多态的的原理;用代码实现子类对父类的继承;使用方法的覆盖和重载实现多态性;实现子类和父类对象之间的类型转换。6.1继承性继承性是一种机制,通过该机制,可以自动实现类之间方法和数据的共享,实现代码的复用。通过继承新产生的类称为子类,又称派生类;被继承的类被称为父类,又称基类。父类包括所有直接或间接被继承的类。一个类可以继承其父类的所有成员变量和方法,而且继承具有传递性,如果A继承B,B继承C,则A
2、间接地继承了C。因此,一个类实际上继承了层次结构中在其上面的所有类的成员变量和方法。当A继承B时,表明A类是B类的子类,而类B是类A的父类,类A可以由两部分组成,即从类B继承得到的部分和自身增加的部分。图6-1给出了类之间继承关系示意图。A中新增的部分从B类继承的部分B类6.1.1extends关键字【任务6-1】为Student类产生子类onJobStudent(一)任务描述设某个学生类的定义及使用方法如下:publicclassStudent{Stringname;//姓名intNo;//学号StringInf
3、o(){return"姓名:"+name+"学号:"+No;}}另外,对于成人教育的在职工作人员,也是学生的一种,只是特殊的一类学生,现在希望将在职学生类设计为Student类的子类。(二)任务分析在Java中,用extends关键字来实现子类与父类的继承关系。可以先产生一个新的onJobStudent类,用extends关键字让onJobStudent类成为了Student类的子类,那么子类onJobStudent将继承在同一个包中的父类Student的非私有(参考7.3)的变量和方法。(三)任务实施onJobS
4、tudent类实现代码如下publicclassonJobStudentextendsStudent{}为了说明子类onJobStudent将继承父类Student的变量和方法,可以编写测试类如下,publicclasstestOnJobStudent{publicstaticvoidmain(String[]args){onJobStudentli=newonJobStudent();li.name="李丽";li.No=20080101;System.out.println(li.Info());}}运行tes
5、tOnJobStudent类,其输出为姓名:李丽学号:20080101结论可见,虽然在onJobStudent类中,没有定义任何变量和方法,但是在testOnJobStudent类中的main()函数中调用li.name是合法的,因为li是一个onJobStudent类的对象,而onJobStudent是Student类的子类,它继承了Student类的变量name,所以可以访问。同理,li.No,li.Info()都是合法的。6.1.2子类对父类的扩展【任务6-2】在onJobStudent类中增加自身的属性和方
6、法(一)任务描述既然在职学生是一类特殊的学生,所以肯定有他们不同于普通学生类的特征,例如,在职学生一般都有单位,有职称,现在希望在【任务6-1】的基础上,在onJobStudent类中保存单位和职称的信息,并提供一个方法打印这些信息。已知Student类代码如下:publicclassStudent{Stringname;//姓名intNo;//学号StringInfo(){return"姓名:"+name+"学号:"+No;}}(二)任务分析在职学生自身特有的变量和方法可以在子类onJobStudent类中声明,
7、可以将单位和职称用两个变量来表示,放在onJobStudent类中,同时提供一个打印的方法。(三)任务实施publicclassonJobStudentextendsStudent{Stringtitle;//职称Stringcompany;//所在单位voidprintWorkMsg(){System.out.println("职称:"+title+"单位:"+company);}}为了使用在职学生类新增加的变量和方法,修改测试程序,代码如下:publicclasstestOnJobStudent{publics
8、taticvoidmain(Stringargs[]){onJobStudentzhang=newonJobStudent();zhang.name="张三";zhang.No=20081002;zhang.company="广州宝杰公司";zhang.title="工程师";System.out.println(zhang.Info());zhang.pr
此文档下载收益归作者所有