面向对象java实现03继承的应用_第1页
面向对象java实现03继承的应用_第2页
面向对象java实现03继承的应用_第3页
面向对象java实现03继承的应用_第4页
面向对象java实现03继承的应用_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java面向对象程序设计03继承的应用☆Java程序设计☆2章节内容理解什么是继承,继承的好处继承在java中的实现如何创建子类子类成员的特点如何在子类中访问父类多态在Java中的实现方法重写final关键字的使用修饰类修饰属性修饰方法☆Java程序设计☆3案例大学里有英语系、计算机系、管理系、旅游系,每个系开设的课程都包含了数学、语文、英语,除此,每个系还要学习相应的专业课英语系:翻译学计算机系:编程管理系:经济学旅游系:心理学作为不同系的学生,都可以拥有自己的姓名、年龄和班级,都要上那些公共课和本专业的专业课☆Java程序设计☆4英语系学生类classEnglishStudent{StringstuName,stuClass;intstuAge;voidmath(){}voidchinese(){}voidenglish(){}voidtranslate(){}}☆Java程序设计☆5计算机系学生类classComputerStudent{StringstuName,stuClass;intstuAge;voidmath(){}voidchinese(){}voidenglish(){}voidprogram(){}}☆Java程序设计☆6管理系学生类classManageStudent{StringstuName,stuClass;intstuAge;voidmath(){}voidchinese(){}voidenglish(){}voideconomics(){}}☆Java程序设计☆7旅游系学生classTourismStudent{StringstuName,stuClass;intstuAge;voidmath(){}voidchinese(){}voidenglish(){}voidpsychology(){}}☆Java程序设计☆8案例分析上面四个类都有stuName、stuClass、stuAge这些属性,学数学、学语文、学英语这些方法。这些属性和方法都是重复定义的。为了达到代码的可重用性,我可以把这些相同的属性和方法给提取出来,单独作一个类:学生类,然后由英语系学生类、计算机系学生类、管理系学生类、旅游系学生类继承它,在每个子类里描述和父类不同的部分就行了☆Java程序设计☆9继承在Java中的实现首先编写一个父类再写子类,使用extends关键字继承父类语法

class子类extends父类{

类体;}☆Java程序设计☆10案例优化classStudent{StringstuName,stuClass;intstuAge;voidmath(){}voidchinese(){}voidenglish(){}}classEnglishStudentextendsStudent{voidtranslate(){}}classComputerStudentextendsStudent{ voidprogram(){}}classManageStudentextendsStudent{voideconomics(){}}classTourismStudentextendsStudent{voidpsychology(){}}☆Java程序设计☆11案例解析这样的代码看起来就简洁多了。在父类里定义的方法和属性,子类都可以通过继承的方式拥有。所以使用Java面向对象继承的特性,可以大大提高代码的重用性。同时,这种方式也便于扩展,如果大学里再多开设一个系,那么创建该系的学生类,继承父类后,在子类描述自己所拥有的特殊方法和属性就行了。☆Java程序设计☆12继承一个新类可以从现有的类中派生,这个过程称为类继承。现有类称为新类的父类(基类)新类称为现有类的子类(派生类)在有继承关系的两个类,可以描述子类继承了父类父类派生出子类☆Java程序设计☆13图示父类

子类父类/子类是相对的Middle类Cooker类Doctor类Person类Employee类Student类College类☆Java程序设计☆14继承的特点Java中的继承只能是单一继承,即一个子类只能有一个父类,反之,一个父类可以被多个子类继承当一个子类继承了父类之后父类的方法和属性只能部分被子类对象继承父类的构造方法不能被它的子类继承在子类中还可以添加自己的属性和方法☆Java程序设计☆15子类构造方法子类对象实例化时会先去调用父类的默认构造方法:子类需要通过父类构造方法的调用来完成从父类继承下来的属性初始化。再调用本类的构造方法若父类中没有默认构造方法时,需要在子类的构造方法中使用super()明确指定出要调用父类的哪个构造方法super()语句必须是构造方法中的第一条语句☆Java程序设计☆16方法重写多态的体现重写在程序里体现在父类和子类之间父类有一个方法,当子类也拥有相同的方法时这就叫重写子类和父类的方法名,返回值类型和参数完全相用子类对象调用子类中的重写方法可以在子类中使用super.方法名()调用父类中的方法☆Java程序设计☆17示例public

class

Person{

public

void

hobby(){

System.out.println("吃东西");

}}class

Child

extends

Person{

public

void

hobby(){

System.out.println("玩游戏");

}}classstudent

extends

Person{

public

void

hobby(){

System.out.println(“画画");

}}☆Java程序设计☆18多态的应用我们说马是动物,牛也是动物,人也是动物。说明动物这个类型可以指向不同类的对象。但反过来,动物是马,动物是牛这个说法就不成立了。因为马这个类型不能指向动物。所以父类的类型可以指向子类的对象,但子类的类型不能指向父类的对象允许创建父类的对象,实例化为子类,这种情况下,该对象只能调用子类重写父类中的方法,不能调用子类中独有的方法☆Java程序设计☆19示例public

class

Person{

void

walk(){

System.out.println("用腿走路");

}

void

hobby(){

System.out.println("吃东西");

}

}class

Child

extends

Person{

public

void

hobby(){

System.out.println("玩游戏");

}}classTest{

publicstaticvoidmain(String[]args){

Person

p=newChild();

p.hobby();//结果是“玩游戏”,因为虽然p是父类的变量,但指向是Child这个子类的对象,而Child这个子类重写了hobby这个方法,所以优先调用子类的方法

p.walk();//结果是“用腿走路”,因为Child这个子类并没有重写父类walk的方法,所以调用的是继承于父类walk的方法

}}☆Java程序设计☆20final修饰符使用final修饰的方法不能被子类改写。使用final修饰属性称为常量在定义属性的同时赋值在构造方法中对其赋值该值不可以在使用的过程中被更改。使用final

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论