- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)