第4章_深入面向对象程序设计-教学课件.ppt

第4章_深入面向对象程序设计-教学课件.ppt

  1. 1、本文档共134页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 深入面向对象程序设计 本章内容提要 类的继承性(Inheritance) 继承的概念: 继承的一般含义是指接收来自父母的财产,从另一个角度上分析,也可以将继承理解为子女拥有父母所拥有的东西。 在java中,继承的含义与此类似,不同之处在于java中继承的实体是类而不是人。 类的继承:继承是面向对象程序设计中的一个重要特色。类继承也称为类派生,是指一个类可以继承其它类的所有内容,包括成员变量和成员方法。被继承的类称为父类或者超类(Superclass),继承后产生的类成为子类或者派生类(Subclass)。 继承性很好地解决了软件的可重用性问题。通过继承机制,子类能复用父类的代码,同时又允许子类添加自己特有的变量和方法,因此,只需指明子类与父类类的不同,即增加自己的属性和方法即可。 类的继承性(Inheritance) java要求每个类都有父类,当没有显式继承父类时,父类隐含为java.long包中的object类。一个父类可以同时拥有多个子类,此时这个父类实际上时所有子类的共有属性和方法的集合,而每一个子类则是父类的特殊化,是在公共属性的基础上的功能及属性的扩展和延伸。 java不支持类的多重继承,只支持单继承,即每个子类只能有一个直接父类,类的层次结构为树状结构,object类为树的根节点。与多重继承(相应的类结构为网状结构)相比,单继承比较简单,掌握、控制起来相对容易。Java虽然只支持单继承,但可通过接口来实现多继承功能。 类的继承性(Inheritance) 特别要注意的是:通常根据应用定义自己的类层次,在定义类的层次结构中,父类与子类的关系是一般与特殊的关系,而不是整体与部分的关系,如下图所示。 类的继承性(Inheritance) 类的继承性(Inheritance) 类继承具有传递性,也就是说子类具有其父类和父类的父类,一直到Object类的所有类的内容。比如,B类继承了A类,而C类又继承了B类,则C类包含A类和B类的所有内容。 类的继承性的一些特点 Java中类继承的实现 1.创建子类 在Java语言中,所有的类都是由Object类派生出来的,比如Math类和String类,以及用户自己新建的类。 通过在类的声明中加入extends关键字来创建一个类的子类,其形式如下: [修饰符] class 子类类名 extends 父类类名 { 类体 } 把子类定义为父类的直接子类,如果父类又是某个类的子类,则子类同时也是该类的间接子类。子类可以继承其所有父类的内容。 如果没有使用extends,则该类为ct的子类。 类继承并不改变类中变量和方法的访问权限,如果父类中的变量和方法为public、protected或者friendly,其子类中的这些变量和方法依然为public、protected或者friendly。 子类不能继承父类中访问权限为private的实例变量和实例方法。 Java中类继承的实现 定义一个人类,具有如下属性和方法,再定义一个学生类,学生也是人,所以他具有人的所有属性和方法,除此之外,学生还有自己的属性和方法。 使用继承的类 class Persion{ int age; int height; void eat(){ } void sleep(){ } } class Student extends Persion{ int score; void study{ } } 子类对父类构造方法的继承 子类不仅可以继承父类的非私有成员变量和方法,也可以继承父类的构造方法,原则如下: 若父类是无参数的构造方法,则子类无条件的调用父类构造方法; 如果子类没有构造方法,它继承父类的无参数的构造方法作为自己的构造方法,如果子类有构造方法,那么在创建子类的对象时,将先执行继承下来的父类的构造方法,然后执行自己的构造方法; 对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用“super(参数列表)”来调用,而且必须作为子类构造方法的第一条语句; 如果子类在自己定义构造方法中如果没有用super明确调用父类的构造方法,则在创建对象时,将自动先执行父类的无参构造方法,然后再执行自己定义的构造方法。 子类对象的创建 创建一个类的对象时,系统会调用其构造函数对所属成员变量进行初始化,那么对于继承自父类的成员又该如何初始化呢?请看下面的例子: class Inher2_1{ //父类 int a; Inher2_1(){ //X1 构造函数 a=10; Sytln(“调用父类构造函数); } } public class Inher2 extends Inher2_1{ int b; Inher2(){ // X2

文档评论(0)

一天一点 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档