欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第8章动物类派生继承与多态精选PPT.ppt

    • 资源ID:49397236       资源大小:2.52MB        全文页数:30页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第8章动物类派生继承与多态精选PPT.ppt

    第第8 8章动物类派生继承与章动物类派生继承与多态多态第1页,本讲稿共30页能力目标能力目标:理解类的继承,能编写类及其派生子类。理解多态含义,理解上转型对象,能在子类中重写父类的同名方法。能运用继承与多态编写人类派生学生类、动物类派生马类等程序。第2页,本讲稿共30页内容介绍8.1 任务预览8.2 继承与派生8.3 用protected声明受保护成员8.4 关键字super8.5 类类型变量赋值8.6 多态性8.7 本章小结8.8 实训8:人类派生与动物类派生第3页,本讲稿共30页8.1 任务预览 本章实训程序运行结果:第4页,本讲稿共30页8.2 继承与派生继承与派生 计算机世界与自然界一样,类之间也有继承和派生关系。运用继承与派生能达到代码重用、简化编程的目的。语法:public abstract final class 子类名子类名 extends 父类父类 .类的单一继承关系形成了清晰的层次结构,树状图如下:第5页,本讲稿共30页【例8-1】编写人类。再编写继承人类的学生类,学生类还拥有学号字段和学习方法。构造人类和学生类的对象,输出有关信息。class Human1 /人类protected String name;protected char sex;protected int age;public Human1(String name,char sex,int age)this.name=name;this.sex=sex;this.age=age;public void think()/思考方法 System.out.println(name+在思考.);第6页,本讲稿共30页class Pupil1 extends Human1 /继承人类的学生类protected String stuNo;/学号public Pupil1(String stuNo,String name,char sex,int age)super(name,sex,age);this.stuNo=stuNo;public void learn()/学习方法 第7页,本讲稿共30页public class Example1 public static void main(String args)Human1 person=new Human1(林冲,男,30);person.think();System.out.println();Pupil1 aPupil=new Pupil1(001,李明,男,6);aPupil.think();aPupil.learn();第8页,本讲稿共30页8.3 用用protected声明受保护成员声明受保护成员 关键字protected可修饰类的字段和方法,这些成员能被所有派生子类直接或间接继承。protected修饰的类成员,还能被类所在的包访问。在例8-1中,使用了关键字protected修饰人类Human1的name、sex和age字段。虽然protected可以修饰字段,但类的封装性要求除了final常量字段外,其它字段一律应为private。故不可滥用protected修饰字段。第9页,本讲稿共30页【例8-2】按照类封装性要求改写例8-1,以保证字段为private。class Human2 private String name;private char sex;private int age;public Human2(String name,char sex,int age)protected String getName()public void think()第10页,本讲稿共30页class Pupil2 extends Human2 private String stuNo;public Pupil2()public void learn()public class Example2 public static void main(String args)Human2 person=new Human2(林冲,男,30);person.think();Pupil2 aPupil=new Pupil2(001,李明,男,6);aPupil.think();aPupil.learn();第11页,本讲稿共30页 8.4 8.4 关键字关键字supersuper8.4.1 用super调用父类构造方法 类如果没有显式声明构造方法,则自动生成无参数的默认构造方法。类如果没有显式声明构造方法,则自动生成无参数的默认构造方法。子子类类不不继继承承父父类类的的构构造造方方法法,因因此此,子子类类如如果果想想使使用用父父类类的的构构造造方方法法,必必须须在在子子类类的的构构造造方方法法中中使使用用,并并且且必必须须使使用用关关键键字字super来来表示,而且表示,而且super必须是子类构造方法中的头一条语句。必须是子类构造方法中的头一条语句。【例8-3】编程,验证执行子类构造方法会自动调用父类的构造方法。class Human3 public Human3()System.out.println(构造了一个人);第12页,本讲稿共30页class Pupil3 extends Human3 public Pupil3()/super();/相当于执行了本语句System.out.println(构造了一个学生);public class Example3 public static void main(String args)Pupil3 pupil=new Pupil3();Student第13页,本讲稿共30页8.4.2 用super访问父类字段和方法 除了调用父类构造方法外,super还可在子类中指代父类对象,用于:访问被子类隐藏的父类字段,调用被子类覆盖的父类方法。使用形式:super.父类字段名 super.父类方法名(可选实参表)第14页,本讲稿共30页1 1、成员的隐藏、成员的隐藏 对于子类可以从父类继承的成员变量,只要子类中声对于子类可以从父类继承的成员变量,只要子类中声明的成员变量和父类中的成员变量同名时,子类就隐藏明的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量;子类自己声明定义的方法与父类方了继承的成员变量;子类自己声明定义的方法与父类方法同名是指子类重新声明定义的这个成员方法。法同名是指子类重新声明定义的这个成员方法。第15页,本讲稿共30页2、子类通过重写可以隐藏已继承的实例方法。、子类通过重写可以隐藏已继承的实例方法。1重写的语法规则重写的语法规则 如果子类可以继承父类的某个实例方法,那么子类如果子类可以继承父类的某个实例方法,那么子类就有权利重写这个方法。就有权利重写这个方法。方法重写方法重写是指:子类中定义一个方法,这个方法的类型和是指:子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全且这个方法的名字、参数个数、参数的类型和父类的方法完全相同。相同。2重写的目的重写的目的 子类通过方法的重写可以隐藏继承的方法,子类通过方法的重子类通过方法的重写可以隐藏继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。写可以把父类的状态和行为改变为自身的状态和行为。Bank第16页,本讲稿共30页 8.5 类类型变量赋值类类型变量赋值8.5.1 子类对象的上转型对象 子类由父类派生,可把子类对象赋给父类声明的变量。如:Human human=new Pupil();或者:Human human;Pupil pupil=new Pupil();human=pupil;第17页,本讲稿共30页这种由父类变量引用的子类对象就是上转型对象。特征:(1)上转型对象不能操作子类新增的成员字段和成员方法。(2)上转型对象能使用父类被继承或重写的成员方法、被继承或隐藏的成员变量。(3)如果子类重写了父类的方法,则上转型对象调用该方法时一定是重写后的方法(多态性)。(4)如果子类重新定义了父类的同名字段,即隐藏了父类的字段,则上转型对象访问该字段时必定是父类本身的字段。第18页,本讲稿共30页【例8-4】编程,测试子类对象的上转型对象以及还原后的子类对象。例8-4第19页,本讲稿共30页8.5.2 子类变量不能引用父类对象 父类对象没有下转型对象。父类对象不能直接赋值给子类变量,子类变量不能直接引用父类对象。如果一定要引用,则必须使用强制类型转换,语法:(类型名)变量比如:Pupil4 pupil=(Pupil4)human;注意:并不是所有强制类型转换都能成功,例如:把马类的动物强制转换为鸟,就无法转换。无法转换时会引发异常。第20页,本讲稿共30页8.5.3 兄弟类对象不能相互替换 如果鸟类、马类和鱼类都继承动物类,则它们是同一层次的,是兄弟(姐妹)类。显然,鸟不是马,鸟也不是鱼,因此,不能把鸟对象赋给马类或鱼类声明的变量。同一层次的兄弟类变量之间不能相互赋值,即兄弟类对象间不能相互替换。第21页,本讲稿共30页8.6 多态性多态性 类的多态性:一是类本身,二是作为父类专用于派生,三是通过实现接口而充当接口的实例类型。多态主要反映在方法重写(覆盖)和方法重载这两个方面。第22页,本讲稿共30页8.6.1 方法重写方法重写【例8-5】编程,测试方法重写方面的多态性。class Mammal /哺乳动物类public void Shout()/呼叫方法System.out.println(不同类的动物叫声不同);class Cat extends Mammal /继承哺乳动物类的猫类public void Shout()/重写呼叫方法System.out.println(猫的叫声:喵.喵.);class Dog extends Mammal /继承哺乳动物类的狗类 public void Shout()/重写呼叫方法 System.out.println(狗的叫声:汪.汪.);第23页,本讲稿共30页class Tiger extends Mammal /继承哺乳动物类的虎类public void Shout()/重写呼叫方法System.out.println(虎的叫声:吼.吼.);public class Example5 public static void main(String args)Mammal animal;animal=new Cat();animal.Shout();animal=new Dog();animal.Shout();animal=new Tiger();animal.Shout();第24页,本讲稿共30页8.6.2 方法重载方法重载 方法重载:在一个类中定义多个同名但签名不同的方法。例如两数相加方法add(a,b),参数类型组合有4种(多态):整整、整实、实整、实实,因此可定义4个同名但参数类型不同的方法(详见第3章3.5节“方法签名与方法重载”的例3-2)。第25页,本讲稿共30页8.7 本章小结 类的继承与派生是一对互逆关系。类是单一继承单一继承的,最顶层是根类Object。protected主要作用是声明能被所有派生子类继承的成员。关键字super与超(父)类相关,可以调用超类构造方法,也可访问被子类隐藏的父类字段,或调用重写的父类方法。把子类对象赋给父类声明的变量,就变成了上转型对象。但子类变量不能引用父类对象,兄弟类对象也不能相互替换。关于多态性,主要表现在方法重写和方法重载上。前者涉及到两个类,属于运行时多态,也叫动态多态性动态多态性。而方法重载则是在一个类内部,属于编译时多态,也叫静态多态性。静态多态性。它们的共同点是方法名相同。第26页,本讲稿共30页8.8 实训8:人类派生与动物类派生(1)编程,编写人类Human,有私有的姓名、性别和年龄字段,定义获取各个私有字段的受保护方法,再定义公共的构造方法和思考方法。编写继承人类的学生类Pupil,有私有的学号字段以及获取该字段的受保护方法,还有公共的构造方法和学习方法。再编写继承学生类的大学生类Student,有公共的构造方法、自学方法和输出数据方法。最后设计一个入口主类,构造若干个大学生,把他们的数据和行为列举出来。第27页,本讲稿共30页(2)编程,测试多态:先编写动物类Animal,成员有:类名常量字段,私有的消息字段,公共的构造方法,公共的获取和设置消息方法、呼吸方法和行走方法。再分别编写继承动物类的鸟类Bird、马类Horse和鱼类Fish,均重新定义类名常量字段以隐藏继承的字段,重写父类的行走方法。最后编写一个入口主类,依次构造Animal类的各个上转型对象,调用其行走等方法,看是否会得到不同的结果。第28页,本讲稿共30页作业:定义一个图形父类,包含求面积的方法,扩展子类圆、矩形、三角形等类,分别求面积。第29页,本讲稿共30页谢谢!返回目录返回目录 结束放映结束放映第30页,本讲稿共30页

    注意事项

    本文(第8章动物类派生继承与多态精选PPT.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开