- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章继承多态与接口
第4章 继承、多态与接口 第4章 继承、多态与接口 4.1 继承 4.1.1 Java继承的实现 类的继承原则 2、继承的语法 其中,类Class2称为类Class1的基类,新定义的类Class1称为Class2的派生类,extends是Java语言的保留字,指明类之间的继承关系。 花括号中定义的是Class1中新增加的数据成员与方法成员。 受保护成员具有公有成员与私有成员的双重角色:它可以被后代类的方法成员访问,但不可以被其他不相关的类的方法成员所访问。 继承与成员访问控制 在引入继承机制后,子类继承了超类除构造方法和私有成员以外的所有成员,这些成员称为子类的继承成员。注意,继承成员不仅包括在超类中定义的公有、受保护成员,还包括超类的继承成员,即超类继承它的祖先类得到的成员。在子类的内部,不仅能够访问子类自己定义的所有成员,也能够访问超类中公有和受保护的成员,但不能访问超类中私有的成员。 4.1.2 构造方法在类继承中的作用 严格地说,构造方法不能继承,子类继承父类的所有成员变量和成员方法,但不继承父类的构造方法。由于子类在创建对象时要对继承来自父类的成员进行初始化,因此,在创建子类除了执行子类的构造方法外,还需要调用父类的构造方法,必须遵循如下原则: 4.1.3变量的继承、隐藏 子类可以继承父类的所有非私有属性。由于子类的可扩充性,子类有可能定义与父类同名的属性变量,这种情况下,在子类中将隐藏父类的同名变量。 4.2 访问控制符 访问控制符是一组限定类、域或方法是否可以被程 序里的其他部分访问和调用的修饰符。Java用来修饰类 的访问控制符只有public,表示类对外“开放”,类定义时 也可以无访问修饰,这时类只限于同一包中能访问使 用。修饰属性和方法的访问修饰符有3种:public、 protected、private,还有一种是无修饰符的默认情况。 在外界能使用某个类的成员的条件是首先能访问类,接 下来要能访问类的成员。 4.2.1 公共访问控制符 公共访问控制符 public 可以用于两个地方:首先是作为类的修饰符,将类声明为公共类,表明它可以被所有的其他类所访问和引用;其次,可以作为类的成员的访问修饰符,表明在其他类中可以无限制地访问该成员。 4.2.3私有访问控制符 私有访问控制符 private 用来声明类的私有成员,它提供了最高的保护级别。用private修饰的域或方法只能被该类自身所访问和修改,而不能被任何其他类 包括该类的子类 来获取和引用。 4.2.4保护访问控制符 用保护访问控制符 protected 修饰的成员变 量可以被三种类所引用: 该类本身; 与它在同一个包中的其他类; 在其他包中的该类的子类。 4.3 多态性 例4-6 复数的加法 4.3.2方法的覆盖 例如,以下类B定义的方法中,只有test int x 存在 方法覆盖。 class B extends A protected void test int x // 将覆盖父类方法 System. out. println in B.test int :+x ; protected void test String x,int y // 不会产生方法覆盖 System. out. println in B.test String ,int :“+ x+,+y ; 4.4 this 和super 4、一个构造方法中调用另一个构造方法 链式构造方法 4.4.2 通过super访问父类成员 2、调用超类的构造方法 4.5 final修饰符的使用 4.5.3用final定义常量 4.6 抽象类和抽象方法 4.6.1抽象类的定义 在类的声明时,如果使用abstract修饰符对类加以修饰,这个类就是抽象类。 抽象类的主要作用是描述抽象概念,形成更清晰的类层次体系。 4.7 接口 interface 4.7.1 接口定义 有关接口定义要注意以下几点: 声明接口可给出访问控制符,用public修饰的是公共接口; 接口的继承关系 4.7.2 接口的实现 接口与抽象类的区别 二者的相似之处: 1 它们都不可直接用来产生对象; 2 它们之中都可以有抽象方法。 4.8 内嵌类 注意: Java程序中所有定义的类均将产生相应的字节码文件,以上程序中的内嵌类经过编译后产生的字节码文件名为OuterOne$InneRDne.class。内嵌类的命名除了不能与自己的外部类同名外,不必担心与其他类名的冲突,因为其真实的名字加上了外部类名作为前缀。 4.9 对象引用转换 4.9.1 对象引用赋值转换 4.9.2 对象引用强制转换 小结 实现接口应注意以下几点: 1 一个
文档评论(0)