- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA第9章继承、多肽与接口
第9章 继承、多态与接口 本章学习重点: 继承与多态的概念 继承与多态的实现机制 抽象类和接口 9.1 继承与多态 当一个类拥有另一个类的数据和操作时,就称这两个类之间具有继承关系,被继承的类称为父类或超类,继承的类称为子类。 一个父类可以同时拥有多个子类,该父类实际上是所有子类的公共成员变量和公共方法的集合,而子类是父类的特殊化,可对公共成员变量和方法在功能、内涵方面加以扩展和延伸。 面向对象的继承特性中,还有一个关于单继承和多继承的概念。 单继承是指任何类都只有一个父类。 多继承是指一个类可以有一个以上的父类,它静态数据和操作从所有这些父类中继承的。 Java只支持单重继承,但支持界面,一个类可以实现多个界面。利用界面可以得到多继承的优点,又没有多继承混乱、复杂的问题。 Java继承:创建子类 Java中的继承是通过extends关键字来实现的。格式为: class 子类名 extends 父类名称{ …… } 在定义类时用extends关键字指明新定义类的父类,就在两个类之间建立了继承关系,新定义的类被称为子类。 如果子类和父类在同一个包中,它可以从父类那里继承所有非private的成员变量和方法作为自己的成员。 如果子类和父类不在同一个包中,它可以从父类那里继承protected、public的的成员变量和方法作为自己的成员. 成员变量的隐藏和方法的覆盖 1.成员变量的继承 子类可以继承父类的所有非私有成员变量。 2.成员变量的继承 子类重新定义一个从父类那里继承来的成员变量变量完全相同的变量,称为成员变量的隐藏。 3.方法的覆盖 方法的覆盖是指子类重定义从父类继承来的一个同名方法,此时子类将清除父类方法的影响。 注意:子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名、相同的参数表和相同的返回类型。 方法的覆盖与成员变量的隐藏的区别为: 子类隐藏父类的成员变量只是使之不可见,父类的同名成员变量在子类对象中仍然占有自己独立的内存空间; 而子类方法对父类同名方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不存在。 方法的覆盖与成员变量的隐藏的意义:将父类行为和状态改为自身的行为和状态,对外仍保持统一的接口和名字,不失继承性。 super 子类对父类的同名成员变量和方法,分别实行隐藏和覆盖。但是,有时需要在子类中访问父类的变量、父类的方法,Java提供的super就可以实现这访问。它的使用有三种情况: 访问被隐藏的父类成员变量,如: super.VariableName 调用父类中被覆盖的方法,如: super.MethodName 调用父类中的构造方法,如: super([paramList]) 多态性 多态性是面向对象程序设计的又一特征。 面向过程的语言编程的主要工作是编写一系列过程或函数,这些过程和函数各自对应一定的功能,它们之间不能重名,否则在调用时,就会产生歧异和错误。 而在面向对象的程序设计中,有时却需要利用这样的“重名”现象来提高程序的抽象度和简洁性。 多态性是指同名的不同方法在程序中共存。 即为同一个方法定义几个版本,运行时根据不同情况执行不同的版本。调用者只需使用同一个方法名,系统会根据不同情况,调用相应的不同方法,从而实现不同的功能。 在Java语言中,多态性的实现有两种方式: 1、覆盖实现多态性 2、重载实现多态性 1、覆盖实现多态性 覆盖实现多态性 通过子类对继承父类方法的重定义来实现。使用时注意:在子类重定义父类方法时,要求与父类原型(参数个数、类型、顺序)完全相同。 重写方法的调用规则 对于重写的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。对于类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法。如果子类继承了父类的方法(未重),则运行时系统调用父类的方法。因此,一个对象可以通过引用子类的实例来调用于类的方法。 方法重写的两个原则: 改写后的方法不能比被重写的方法有更严格的访问权限。 改写后的方法不能比被重写的方法产生更多的例外。 2、重载实现多态性 重载实现多态性是通过定义类中的多个同名的不同方法来实现的。编译时则根据参数(个数、类型、顺序)的不同来区分不同的方法。通过重载可定义多种同类的操作方法,调用时根据不同需要选择不同的操作。 与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是类对自身已有的同名方法的重新定义。 由于重载发生在一个类里,不能用类名来区分不同的方法,所以采用不同的形式参数列表,包括形式参数的个数、类型、顺序的不同,来区分重载的方法。
文档评论(0)