- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 面向对象继承与多态(中)
方法在父类中定义,在子类中被覆盖,JVM在运行时会根据对象的实际类型决定调用哪个方法。 当子类要操作继承自父类的同名数据成员时,必须使用关键字super引导。 当子类执行继承自父类的方法时,处理的是父类的成员变量 4.6.3 方法的调用机制 调用对象方法和域的机制: 静态绑定,也称前期绑定,指在编译过程中根据对象声明类型判断方法调用的一种机制 动态绑定,也称运行时绑定,指在运行期间根据所引用对象实际类型,调用其相应方法的一种机制 方法调用过程 编译器查看对象的声明类型和方法名,通过声明类型找到方法列表 编译器查看调用方法时提供的参数类列表 如果方法是private、static、final或者构造器,编译器就可以确定调用那个方法,这是静态绑定 (如果不是上述情况,就要使用动态绑定) 虚拟机提取对象的实际类型的方法表 虚拟机搜索方法签名 调用方法 【例5-11】 4.6.4 重载与覆盖的区别 方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系 覆盖是由一对方法产生的关系;方法重载是多个方法之间的关系 覆盖要求参数列表相同;重载要求参数列表不同 在覆盖关系中,具体调用哪个方法体,是根据对象的类型来决定的;重载关系是根据调用时的实参表与形参表来选择方法体的 4.7 Object:所有类的超类 Object类是Java所有类的共同祖先,即使定义类时没有写extents Object。 class Employee extends Object Object型的变量可以引用任何类型的对象 在Object当中定义了许多方法,这些方法都可以被所有子类所继承。 public boolen equals(Object obj) 用于判断两个引用是否指向同一对象 子类可以覆盖equals方法,改变方法功能String类、包装类和 URL类覆盖了该方法,比较的是他们所代表的值 4.7.1 Equals方法 现在开始对所有需要比较的域进行比较。使用==比较基本类型域,使用equals比较对象域。如果所有域都匹配,就返回true;否则返回false return field1 == other.field1 field2.equals(other.field2) . . .; 4.7.2 toString方法 public String toString()返回表示对象值的字符串 只要对象与字符串通过“+”连接,Java编译器会自动调用toString() Object类定义的toString方法,打印输出对象所属的类名和散列码 System.out.println(System.out); java.io.PrintStream@2f6684 类库中绝大部分类覆盖了toString(),打印输出对象类名和方括号括起来的域值 Point p=new Point(10,20); System.out.println(p); java.awt.Point[x=10,y=20] 自定义toString() class Employee {… public String toString() { return getClass().getName() +“[name= + name + ,salary= + salary+ ,hireDay= +hireDay+ ]; } } 本章小结 本章介绍了面向对象的基本特征,即封装、继承和多态,以及这些特征如何在Java语言中体现,如何在编程中应用。 封装是通过访问控制符实现的,确定访问范围,首先看类前的修饰符,再看方法前的修饰符。 Java继承是单继承,所有类的共同祖先类是Object。子类继承父类,并不是将父类的代码复制到子类中,而是在生成子类对象时,在子类对象中构造父类对象。 Java的多态分为重载和覆盖两种形式,重载的方法之间往往存在委托调用关系。 方法的继承与覆盖 当父类的引用指向子类对象时,若访问被重写的方法,则将访问被重新定义的子类中的方法. 方法的调用按对象的类型调用,无论使用什么类型的引用,其调用的都是具体对象所在类中定义的方法. 成员变量的按引用的类型来调用. 4.1.5 继承类初始化和装载 实例:Beetle.java 先父类静态初始化,后子类静态初始化 先父类定义初始化、构造函数,后子类定义初始化、构造函数 4.1.6 继承的作用 可扩展性强,很容易完成一个新的应用 设计的层次清晰,简化面向对象的设计 4.1.7 继承设计的技巧 将公共操作和域放
原创力文档


文档评论(0)