- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《网络程序设计》第3讲
* * Java语言程序设计Programming in Java 西南大学 计算机与信息科学学院 Faculty of Computer Information Science , Southwest-China University 任 柯 jacky711@swu.edu.cn * * 第9章 继承与多态 * * 继承性(inheritance) 继承机制:属于一个子类(派生类)的对象从其父类(基类)中继承了全部属性和行为。所有可以发送给父类对象的消息也可以发送给子类对象。 - 子类:从某个特定类派生出来的类。 - 父类:派生出某个特定类的类。 继承关系按类层次结构逐层延伸。 继承使得一个类可通过扩展现有类来定义。 子类继承超类的属性和行为;子类可以增加新的属性和行为;子类可以重写(override)从超类中继承的行为。 * * 例:Square类 从 Rectangle类继承了calculateArea( )方法 UML类图 Rectangle -length: double - width: double + calculateArea( ): double Square + Square( in side: double) area = length ×width area = length ×width * * 例:Square类重写了在超类中定义的calcPerimeter( )方法 UML类图 Rectangle -length: double - width: double + calculateArea( ): double + calcPerimeter( ): double Square + Square( in side: double) + calcPerimeter( ): double perimeter = 2×length + 2×width perimeter = 4×length * * 多态性(polymorphism) 对象的多态性是指在超类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个子类中具有不同的语义 。 例:不同动物的行走 UML类图 Animal + move( ) Dog + move( ) Fish + move( ) Snake + move( ) 移动腿 使用鳍推水 伸缩身体 * * 继承性 继承性 - 软件重用的一种方法 继承使得一个类可通过扩展现有类来定义 扩展声明的新类称为子类,原有的类称为父类 子类继承父类的变量和方法;子类可以增加新的变量和方法;子类可以重写(覆盖)从父类中继承的方法。 在创建一个类时,总是在继承,除非已明确指出从其他类中继承,否则就是在隐式的从Java标准根类java.lang.Object进行继承。 * * 继承性的实现 采用关键字extends [类修饰词] class 类名 [extends 父类名] [implements 接口名称列表] { 类体 } 在关键字extends之后添加父类名,指定当前定义的类的直接父类,使得当前定义的类可以继承其父类的域和方法,即在所定义的类与其父类之间建立起一种继承关系。继承关系具有传递性。 在关键字implements之后添加接口名称列表,指定当前定义的类所实现的各个接口。 * * 单继承 在“extends 父类名”中只能指定一个父类名,也就是说,每个类(除java.lang.Object外)有且仅有一个直接父类。 Java不支持多重继承。 Java 允许一个类实现多个接口(interface)。 * * 继承关系中的构造方法 当前定义的类的构造方法必须调用其直接父类的构造方法,而且该调用语句必须是当前定义的类的构造方法的第一条语句,其调用格式是: super(调用参数列表); super是关键字,此处表示其直接父类的构造方法,调用参数列表必须与其直接父类的某个构造方法的参数列表相匹配。 * * 若当前定义的类的构造方法中没有显式写上调用父类构造方法的语句,则JVM会自动在当前定义的子类的构造方法的第一条语句前自动添加调用不含参数的直接父类构造方法的语句,即super( ); 注意:若此时直接父类中没有定义不带参数的构造方法,则编译时将出现编译错误。也就是说,若父类中不含有不带参数的构造方法,就必须在子类构造方法的第一条语句用super关键字显式的调用父类构造方法。 * * 程序实例 J_Teacher.java * * 子类与父类间的类型转换 隐式类型转换:将子类对象转换为父类对象,此时不需要强制类型转换运算符“( )
文档评论(0)