第6章-继承、多态与接口 - Copy.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 继承、多态与接口;本章学习目标:;当一个类拥有另一个类的数据和操作时,就称这两个类之间具有继承关系,被继承的类称为父类或超类,继承的类称为子类。 一个父类可以同时拥有多个子类,该父类实际上是所有子类的公共成员变量和公共方法的集合,而子类是父类的特殊化,可对公共成员变量和方法在功能、内涵方面加以扩展和延伸。 ;面向对象的继承特性中,还有一个关于单继承和多继承的概念。 单继承是指任何类都只有一个父类。 多继承是指一个类可以有一个以上的父类,它静态数据和操作从所有这些父类中继承的。 Java只支持单重继承,但支持界面(interface),一个类可以实现多个界面。利用界面可以得到多继承的优点,又没有多继承混乱、复杂的问题。 ;Java继承:创建子类;【例】应用继承性的实例。 class Student{ //自定义“学生”类 int stu_id; //定义属性:学生学号 void set_id(int id){ //定义方法:设置学号 stu_id=id; } void show_id(){ //定义方法:显示学号 System.out.println(the student ID is:+stu_id); } } class UniversityStudent extends Student{ //定义子类 int dep_number; //定义子类特有的属性变量 void set_dep(int dep_num){ //定义子类特有的方法 dep_number=dep_num; } void show_dep( ){ System.out.println(the dep_number is:+dep_number); } public static void main(String args[]){ UniversityStudent Lee=new UniversityStudent(); Lee.set_id(2007070130); //继承父类学生的属性 Lee.set_dep(701); //使用本类的属性 Lee.show_id(); //继承父类学生的方法 Lee.show_dep(); //使用本类的方法 } } ;成员变量的隐藏和方法的覆盖;【例】成员变量的隐藏和方法的覆盖示例。   class SuperClass{ int x;    ……    void setX( ){      x=0;    }    ……   } ?   class SubClass extends SuperClass{     int x;     //成员变量的隐藏     ……     void setX( ){ //方法的覆盖      x=5;     }     ……   } ;方法的覆盖与成员变量的隐藏的区别为: 子类隐藏父类的成员变量只是使之不可见,??类的同名成员变量在子类对象中仍然占有自己独立的内存空间; 而子类方法对父类同名方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不存在。 方法的覆盖与成员变量的隐藏的意义:将父类行为和状态改为自身的行为和状态,对外仍保持统一的接口和名字,不失继承性。;super ;多态性;多态性是指同名的不同方法在程序中共存。 即为同一个方法定义几个版本,运行时根据不同情况执行不同的版本。调用者只需使用同一个方法名,系统会根据不同情况,调用相应的不同方法,从而实现不同的功能。 在Java语言中,多态性的实现有两种方式: 1、覆盖实现多态性 2、重载实现多态性 ;1、覆盖实现多态性;重写方法的调用规则 对于重写的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。对于类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法。如果子类继承了父类的方法(未重),则运行时系统调用父类的方法。因此,一个对象可以通过引用子类的实例来调用于类的方法。 ;【例6-5】重写方法的调用规则示例。 class A{   void callme( ){     System.out.println(InsideAscallme( )method);   } } ?  class B extends A{   void callme( ){     System.out.println(Inside Bs callme( ) method);   } } ? public class Dispatch{   public static voi

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档