06 面向对象编程的深入讨论.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
06 面向对象编程的深入讨论

JAVA程序设计 面向对象编程的深入讨论 第六章 目标 构造函数的执行机制 屏蔽、覆盖和重载 对象间的类型转换 对象之间的比较 6.1 构造函数的执行机制 构造函数的作用:对创建的对象进行初始化 类的继承机制:子类可以使用父类的功能(即代码), 那么子类对象的初始化要使用到父类的构造函数。 类在继承关系上的初始化的顺序 class SuperClass { SuperClass() { System.out.println(SuperClass constructor); }} 例子6-1 class SuperClass{ SuperClass(String str) { System.out.println(Super with a string.); } } public class SubClass extends SuperClass{ SubClass(String str) { System.out.println(Sub with a string.);} public static void main(String[] args) { SubClass sub = new SubClass(sub); } } 例6-3:对象的初始化顺序问题 public class Test { public static void main(String[] args){ System.out.println(Test main()); Car car = new Car(car); }} 例6-3:对象的初始化顺序 在创建对象时,对象所在类的所有数据成员会首先进行初始化 如果其中的成员变量有对象,那么它们也会按照顺序执行初始化工作。 在所有类成员初始化完成后,才调用对象所在类的构造方法创建对象。构造方法作用就是初始化。 如一个类有静态对象,那么它会在非静态对象前初始化,但只初始化一次 public class Test { public static void main(String[] args){ System.out.println(Test main()); Car car_1 = new car(car-1); System.out.println(------------); Car car_2 = new car(car-2); } } 例6-5 public class Test { static Car car_3 = new Car(car-3); public static void main(String[] args) { System.out.println(Test main()); Car car_1 = new Car(car-1); System.out.println(------------); Car car_2 = new Car(car-2); }} 例6-6 public class Test{ public static void main(String[] args){ System.out.println(main()); System.out.println(car.i = + car.i); } } 6.1构造函数的执行机制:总结 例6-3:在创建对象时,对象所在类的所有数据成员(包括对象)首先按顺序进行初始化,所有类成员初始化完成后,才调用对象所在类的构造方法创建对象。构造方法作用就是初始化。 例6-4,6-5:静态对象(变量)在非静态对象前初始化。静态对象(变量)只初始化一次,再次调用就不初始化了,但非静态对象在每次调用时都要初始化。 6.1构造函数的执行机制:总结 例6-5:程序中的主类的静态变量会在main()方法执行前进行初始化工作。 例6-6:不仅第1次创建对象(如)时,类中所有的静态变量要初始化, 第1次访问类中的静态变量(没有创建对象)时,该类中所有的静态变量也要按照它们在类中排列的顺序初始化。 初始化的顺序包括构造方法调用顺序 主类的静态成员首先初始化。 主类的超类的构造方法按照从最高到最低的顺序被调用。 主类的非静态对象(变量)初始化。 调用主类的构造方法。 6.2 屏蔽、覆盖和重载 6.2.1 屏蔽 子类可以直接从父类继承下来的属性和方法,就象是自己的一样。 如果在子类中又声明了相同名称的属性,则称作子类的该属性屏蔽(shadow)了父类中对应的属性。 6.2.2 覆盖(override)与多态 ?覆盖,这里是针对方法而言的。 如果子类中定义方法所用的名字、返回类型和参数表和父类中方法使用的完全一

文档评论(0)

3471161553 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档