java 课件 第五篇.pptx

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计Java;第5章 超类、子类和继承性;继承:类继承另一个类,这个类除了创建自己的成员外,还能够继承或扩展另一个类的成员 运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性。该类可以被更具体的类继承,每个具体的类都增加一些自己特有的东西。 被继承的类叫超类(superclass),继承超类的类叫子类(subclass);继承性特性如下: 单一继承性:子类只能有一个超类,而超类可以有多个子类; 子类继承超类的所有成员; 子类可以创建自己的成员; 子类不能继承超类的构造器,只能在构造器中通过super()调用超类的构造器; 子类的构造器首先要调用超类的构造器; 多态性之一:子类的成员隐藏和覆盖超类中相同的成员; 多态性之二:超类的对象可以对子类的实例引用; 由abstract和final修饰的类指示类的是否必须或不能被继承。 ;创建子类,格式如下: [abstract|final] class SubCls extends SupCls{ SubClassBody } abstract是可选项,修饰的类叫抽象类,指示其对象引用的必须是其子类实例; final是可选项,修饰的类叫终结类,指示其不能被继承,不能有子类; SubCls是创建的类,称为子类; extends是关键字,指示两个类存在的继承关系; SuperCls是SubCls类的超类。 ;在创建类时,若缺省extends,则该类就为Object类的直接子类。Object类是Java语言中所有类的直接或间接超类。Object类存放在java.lang包中。 子类继承了超类的所有成员,但是无法访问某些受限的成员 子类中可以访问从超类继承下来的三种访问权限设定的成员 ? public; ? protected; ? 缺省。 ;类的继承;类Person有成员: 成员变量:name、sex、birthday 成员方法:setData(String,char,Date) 类Student有成员: 成员变量:name、sex、birthday、stuID、speciality 成员方法:setData(String,char,Date)、 setData(String,char,Date,String,String) 其中:红色标识的成员是类Student继承超类Person的成员。 ;虽然子类可以继承超类所有成员,但是因为超类中成员的访问控制,子类无法访问某些受限成员。 在超类中,由private修饰的访问权限的成员变量和方法,虽然被子类继承,但是子类不能访问。 ;一个更实际的例子: 为了新的功能而编写子类;超类对象可以引用子类实例;第5章 超类、子类和继承性;Java语言中,每个类均有三个量,它们具有特别的含义及用途。 null this super ;null null表示变量的值为“空”,用于表示对象或数组还没有相应的实例引用。例如: Point pNull = null; ;this 表示对类的实例访问,它也表示了对象对该实例引用访问。; 在类中可以来指向成员变量,以示区别于非成员变量; 在构造器中,使用this()形式对另一个构造器的调用; 在类的创建中,需要表示对自身的实例访问时,用this表示。;super 在子类中,使用super访问被隐藏的超类变量,被覆盖的超类方法。 使用有三种情况: 访问被隐藏的超类成员变量; 例如: super.varName 调用超类中被覆盖的方法; 例如: super.methodName([paramList]) 调用超类中的构造方法. 例如:super([paramList]) ;super( )总是引用子类最接近的超类的构造函数。 在类层次结构中,如果超类构造函数需要参数,那么不论子类它自己需不需要参数,所有子类必须向上传递这些参数。;super( )必须是子类构造函数的第一个执行语句,无论你用到了super( )没有,这个次序不变。 如果super( )没有被用到,每个超类的默认的或无参数的构造函数将执行。;第5章 超类、子类和继承性;成员变量的隐藏: 在子类的创建中,如果出现了与其超类相同的成员变量,则超类中的成员变量被子类中的成员变量所隐藏。 成员方法的覆盖: 在子类的创建中,如果出现与超类中有相同名、同参数及同返回类型的成员方法,则超类中的成员方法被子类中的成员方法所覆盖。;方法覆盖: 在子类的创建中,具有与超类中有相同的方法名、相同的参数以及相同的返回数据类型。 它还具有比超类中被覆盖方法更大的可访问性,即权限限制更宽松。 public protected 缺省 private 不同于方法过载。方法过载是在一个类中具有相同方法名的方法,

文档评论(0)

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

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

1亿VIP精品文档

相关文档