- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内容回顾 构造方法 方法重载 封装与访问权限控制 继承的好处 继承的实现 extends关键字用于继承类。 声明一个继承父类的类的通常形式如下: class subclass-name extends superclass-name { //类体 } 例:class Student extends Person { … } 注: 没有extends,默认父类为Object,是最高层类。 只能有一个父类,即单继承 理解继承 子类继承了父类的属性和方法 但有些父类成员不能继承: private成员 子类与父类不在同包,使用默认访问权限的成员 构造方法 继承的特点 通过继承可以简化类的定义,实现代码的重用 Java只支持单继承,不允许多重继承。 可以有多层继承;类B继承类A;类C继承类B; 子类继承父类的成员变量和成员方法,但不继承父类的构造方法 在子类的构造方法中可用super(参数列表)调用父类的构造方法。 如果子类的构造方法中没有显式的调用父类构造方法,也没有使用this关键字调用自己的其他构造方法,那么在产生子类实例对象时JVM自动调用父类无参数的构造方法。 何时使用继承 方法重写 子类可以定义与父类同名的变量,实现对父类变量的隐藏 子类可以定义与父类同名的方法,实现对父类方法的覆盖,即方法重写 方法重写的条件: 必须具有相同的方法名; 必须具有相同的参数列表; 重写方法的返回值类型必须和被重写方法的返回值类型相同或者是其子类; 重写方法的不能缩小被重写方法的访问权限。 方法重写 构造方法能被重写吗? 如何在子类中调用父类的构造方法? 方法修饰符 static修饰符 static修饰符修饰的方法叫静态方法 目的:使该方法独立于类的实例,使用类去访问,而不是类实例,所以也叫类方法 final修饰符 final用法 abstract修饰符 由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类 抽象方法必须声明在抽象类中 抽象方法语法: abstract type method_name(parameter_list); 声明抽象类语法: abstract class{…… } 使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节 抽象方法没有方法体 抽象方法必须在子类中被实现,除非子类是抽象类 abstract修饰符 小结继承 成员变量的隐藏与方法的覆盖的区别为: 子类隐藏父类的成员变量只是使之不可见,父类的同名成员变量在子类对象中仍然占有自己独立的内存空间; 而子类方法对父类同名方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不存在。 方法的覆盖与成员变量的隐藏的意义:将父类行为和状态改为自身的行为和状态,对外仍保持统一的接口和名字,不失继承性。 小结继承 猜猜以下程序的运行结果 class Person { public Person() {System.out.println(person constructor);} } class Man extends Person { public Man() {System.out.println(man constructor);} } class ChineseMan extends Man { public ChineseMan() {System.out.println(chineseman constructor);} } public class Test { public static void main(String[] args) { ChineseMan cm = new ChineseMan(); } } 多态 为什么使用多态 为什么使用多态 什么是多态 实现多态要素 实现多态的两个要素: 1. 方法重写 2. 使用父类类型 方法重写 类型转换 子类转换为父类:自动转换 假设A类是B类的父类,当我们用子类创建一个对象,而这个对象的引用放到父类的对象中时。 A a; a = new B( ); 或 A a; B b = new B( ); a = b; 称这个父类对象a是子类对象的上转型对象。 例如:“老虎是哺乳动物”,哺乳类是老虎类的父类,但这样说将失掉老虎独有的属性。 类型转换 子类转换为父类细节 上转型对象不能操作子类新增的成员变量和方法。 上转型对象可以操作子类继承或重写的成员变量和方法 如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。 父类转换为子类:强制转换 instanceof运算符 上机练习 3、结合课堂案例,实现喂
文档评论(0)