Java面向对象高级编程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 基础培训
第6章 Java面向对象高级编程
6.1.1 类的继承-继承的概念
⒈继承是程序中两个类间的一种关系
⒉指明继承关系后,父类中的属性(成员)就无须在子类中重复描述 ,从而实现了一定程度的代码的重用
类:B 成员属性 成员方法
类:A(继承)
直接超类、直接父类 子类、次类、衍生 类
⒊在Java的继承层次中,一个父类可以有多个直接子类,但一 个子类只能有一个直接父类,即Java不支持多重继承
– 区分形参名及成员变量名 – 可用this来调用它所在的类本身的构造方法
• ⒉super—代表它所在类的直接父类对象
– 访问父类的成员变量及方法 – 调用父类的构造方法
7
6.2.1 类的多态-方法的重载
• ⒈在同一个类中,以相同的名字定义多个方法, 只是参数列表不同,即为方法的重载。
• ⒉它实现了Java编译时的多态性(静态多态性)。 也就是说,程序可以按参数决定调用对应方法, 而此决定是由编译器来做的,即在调用时,Java 将根据实参个数或参数类型选择匹配的方法。
– ⑵直接子类继承同一包中父类里未被访问控制符修饰(默认的 friendly)的成员变量和成员方法。
– ⑶子类不能继承父类中被private修饰的成员变量和成员方法。 – ⑷若子类中声明了一个与父类中同名的成员变量或成员方法,则
子类不再继承该父类中的该同名的成员变量或成员方法。
• 下页介绍构造方法的继承
8
6.3.1 接口-接口的概念
• ⒈接口又称界面,英文名称为interface,它是用来组织 应用中的各类并调节它们的相互关系的一种结构,是用来 实现类间多重继承的结构。
• ⒉ Java中的接口是一种特殊的类,它定义了若干抽象方 法和常量,形成一个属性集合,该属性集合通常代表了某 一组功能的实现。
• ⒊多重继承:是指一个子类可以有一个以上的直接父类, 该子类可以继承它所有直接父类的成员。
9
6.3.2 接口-接口பைடு நூலகம்声明
• 格式: • [public ] interface 接口名[extends 父接口名列表]{ • //接口体 • //常量域声明 • [public ] [static] [final] 域类型 名称=常量值; • //抽象方法的声明 • [public ] [abstract] [native] 方法返回值类型 方法名(参
– ⑶如果实现某接口的类是抽象类,则它可以不实现该接口所有的 方法,但是对于这个抽象类任何一个非抽象的子类而言,它们父 类所实现的接口中的所有抽象方法都必须有实在的方法体。这些 方法体可以来自抽象的父类,也可以来自子类本身,但是不允许 存在未被实现的接口方法。
12
6.3.3 接口-接口的实现
• 一个类要实现某个或某几个接口时,有如下的步骤和注意 事项:
数列表)[throws 异常列表] •}
10
6.3.2 接口-接口的声明
• ⑴interface是定义接口的关键字。 • ⑵接口名只要符合Java对标识符的规定即可。 • ⑶接口的访问控制符只有一个,即public,用此修饰的接口为公共接
口,可以被所有类和接口使用,而没有被public修饰的接口则只能被 同一个包中的其他类和接口利用。 • ⑷接口具有继承性。定义一个接口时可以通过extends声明该新接口 是某个已经存在的父接口的派生接口,它将继承父接口的所有属性和 方法。与类不同的是一个接口可以有一个以上的父接口,它们之间用 逗号分隔,形成父接口列表。新接口将继承所有父接口中的属性和方 法。 • ⑸接口体的声明是定义接口的重要部分。接口体由两部分组成,一部 分是对接口中属性的声明,另一部分是对接口中方法的声明。 • ⑹接口中的所有属性都必须是public static final修饰的,这是系统默 认的规定。所以接口属性也可以没有任何修饰符,其效果完全相同。 • ⑺接口中的所有方法都必须是抽象方法。
• ⒊如果一定要引用父类中这个同名变量,可以使用super 关键字来指示。
5
6.1.4 类的继承-方法的覆盖
• 子类继承父类后可以定义自己的成员变量和方法,当子类 定义了与父类中同名的方法时,则父类中的方法被覆盖, 即方法的结果是子类方法的执行结果。
6
6.1.4 类的继承-super和this
• ⒈this –代表它所在的类本身的实例对象
2
6.1.2 类的继承-类继承的实现
• ⒈继承的实现
– 格式: – [修饰符] class 新定义的类名 [extends 父类名] – 例:class SubRectangleA extends RectangleA{}
• ⒉子类继承父类的原则
– ⑴直接子类继承那些被声明为public或protected的直接父类成员。
3
6.1.2 类的继承-类继承的实现
• ⒊构造方法的继承
– ⑴若父类是无参数的构造方法,则子类无条件地继承该构造方 法。
– ⑵若子类无自己的构造方法,则它将继承父类的无参数构造方法 作为自己的构造方法;若子类有自己的构造方法,则在创建子类 对象时,它将先执行继承自父类的无参数构造方法,然后再执行 自己的构造方法。
– ⑶若父类是有参数的构造方法,子类可以通过在自己的构造方法 中使用super关键字来调用它,但这个调用语句必须是子类构造方 法的第一个可执行语句。
4
6.1.3 类的继承-变量的隐藏
• ⒈子类对从父类那里继承来的变量重新加以定义称为变量 的隐藏。
• ⒉当在子类中定义了与父类中同名的成员变量时,若在子 类中访问此变量,则父类中的同名变量被隐藏,访问的是 子类中定义的同名变量,好像此变量在父类中不存在一样 。
– ⑷一个类在实现某接口的抽象方法时,必须使用完全相同的方法 头。如果所实现的方法与抽象方法有相同的方法名和不同的参数 列表,则只是重载一个新的方法,而不是实现已有的抽象方法。
11
6.3.3 接口-接口的实现
• 一个类要实现某个或某几个接口时,有如下的步骤和注意 事项:
– ⑴在类的声明部分,用implements关键字声明该类将要实现哪些 接口。
– ⑵如果实现某接口的类不是abstract的抽象类,则在类的定义部 分必须实现指定接口的所有抽象方法,即为所有抽象方法定义方 法体,而且方法头部分应该与接口中的定义完全一致,即有完全 相同的返回值和参数列表。
相关文档
最新文档