- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组件类的层次结构定义GUI 组件的所有Java类都是类层次结构中的
第八章 继承 概要 多重继承 继承 UML 类图中,继承关系如下表示:一条带空心三角的实心箭头线表示,三角指向父类 派生子类 Java中, 使用保留字extends来创建继承关系 类图 protected 修饰符 可见性修饰符影响父类的成员在子类中使用的方式 private修饰的变量和方法不能在子类中直接引用 但是它们被声明为public可见性,那么他们可以在子类中引用——– 但是public 违背的封装的原则 那么还有一种可见性修饰符: protected,它比public可见性提供了更多的封装, 但是又没有private封装的那么严实。 super 引用 由于构造函数不被继承,所以子类构造函数通过调用父类的构造函数,建立子类中父类的部分 参考 Words2.java (第301页) 参考 Book2.java (第302页) 参考 Dictionary2.java (第303页) super引用 应由子类的构造函数负责调用父类的构造函数 子类构造函数中:第一行应该使用super引用调用父类的构造函数,否则Java将自动在构造方法开始处产生一行super()调用。 Super的第二种形式,这种用法有下面的通用形式 super.member 多重继承 Java支持单继承,也就是说派生的子类只能由唯一的父类 多重继承 允许子类派生自两个或者两个以上的父类,子类继承所有父类的成员 多重继承有时会引发一些问题,例如两个父类具有同名变量。 Java并不支持多重继承 多数情况下, 使用接口在某些方面来替代多重继承 概要 覆盖 、重载的比较 重载处理一个类中的多个具有相同名称但是签名不同的方法 覆盖处理的方法, 一个在父类中,一个在子类中, 两个方法具有相同的签名 参考 Messages.java (第305页) 参考 Thought.java (第306页) 参考 Advice.java (第306页) 可以用final修饰符定义一个方法,子类不能覆盖父类的final方法 概要 类的层次结构 某个类的子类可以是另外一个类的父类, 形成类的层次结构: Object 类 Object类在 java标准类库的java.lang包中定义 Java中所有的类都派生自Object类 如果一个类定义时没有显式地指明其父类, 那么此类继承自 Object类 因此, Object类是类层次结构中的根类 Object类 Object类包含包含一些被所有类继承的有用方法 例如, Object 类中定义的toString方法 每次我们定义toString方法,实际上是覆盖了此方法从Object类继承的定义 Object类中的toString方法返回一个字符串,这个字符串包含对象类的名称以及其它一些信息 Object 类 如果两个引用互为别名,Object 类中的equals方法返回true 我们在定义类时,可以覆盖equals方法来根据实际情况确定两个对象是否相等 例如,如果两个字符串对象包含相同的字符,那么String类定义的equals方法来返回true 设计String类时,覆盖了继承自Object 类的equals方法 抽象类 抽象类在类的层次结构中起到占位符的作用,通常用于表示一种通用概念。 抽象类不能被实例化 在类的头部使用 abstract 修饰符来申明一个抽象类: 抽象类 抽象类中通常包含没有实现的抽象方法 在抽象类中, abstract修饰符必须应用于每个抽象方法而在接口中可以省略抽象方法的abstract修饰符 一个抽象类也可以包含 非抽象的方法 抽象类没有必要必须包含抽象方法,即抽象类也可以没有抽象方法。与接口不同的是, abstract修饰符必须应用于每个抽象方法 抽象类 抽象类的子类必须覆盖其父类的抽象方法,否则此子类依然被认为是抽象类 抽象方法不能使用 final 或 static定义 在软件设计中,抽象类是一个重要元素:它允许我们在层次结构中建立通用元素 接口层次 与类一样,继承也可以被应用于接口,即接口可以派生出另外一个接口 子接口继承了父接口中所有的抽象方法 实现子接口的类必须定义所有父类与子接口中的所有方法 注意,类的层次结构与接口层次结构是不同的 概要 重温可见性 理解继承与可见性的细微差别是非常重要的 父类所有的变量和方法,甚至是私有成员都会被子类所继承 我们以前提到过,子类中不能通过名字引用私有成员 但是,被子类继承的私有成员总是存在并且能被间接引用 可见性 父类可以引用自己的私有成员,因此子类可以用过调用父类的方法间接引用父类私有成员 即使没有父类对象存在,也可以通过Super引用指向父类 参考 FoodAnalyzer.java (第311页) 参考 FoodIt
文档评论(0)