面向对象程序设计进阶下_第1页
面向对象程序设计进阶下_第2页
面向对象程序设计进阶下_第3页
面向对象程序设计进阶下_第4页
面向对象程序设计进阶下_第5页
免费预览已结束,剩余17页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计进阶(下)单击此处编辑副标题样式版权声明华清远见教育集团;未经华清远见明确许可,不得为任何目的以任何形式复制或传播此文档的任何部分;本文档包含的信息如有更改,恕不另行通知;华清远见教育集团保留所有权利。目标掌握方法重载(Overload)理解掌握this关键字理解对象的构造和初始化过程掌握封装类的用法熟悉Java的自动装箱和拆箱掌握==和equals()的用法及区别熟悉toString()方法熟悉可变参数的用法方法的重载同一个类中方法名相同时,称为方法的重载(overload)

例如:publicvoidprintln(inti);publicvoidprintln(charc);publicvoidprintln(Strings);重载的方法必须有不同的参数列表参数类型不同参数个数不同构造器的重载除了方法外,类的构造器也可以实现重载类的构造器可以相互调用,调用方式是使用this关键字来实现thisthis关键字构造器中指该构造器所创建的新对象方法中指调用该方法的对象this关键字的用法在类本身的方法或构造器中引用该类的实例变量和方法将当前对象作为参数传递给其它方法或构造器用来调用其他的重载的构造器对象的构造和初始化分析内存分配,缺省的初始化进行实例变量的初始化如下递归的进行:1.设置实例变量的值为缺省的初始值2.调用对象的构造器,绑定构造器参数。3.如果构造器中有this()调用,则根据this()调用的参数调用相应的重载构造器,然后,转到步骤5;否则转到步骤4。4.除java.lang.Object类外,调用父类的中的初始化块初始化父类的属性,然后调用父类构造器,如果在构造器中有super()调用,则根据super()中的参数调用父类中相应的构造器。5.使用初始化程序和初始化块初始化成员。6.执行构造器方法体中其他语句。初始化块它指的是类中的“游离块”——不属于变量声明、不属于方法、不属于构造器,但需要用{}单独括起来不管使用哪个构造器创建对象,它都会被首先运行,然后才是构造器的主体部分被执行对象初始化示例父类Person,子类Teacher初始化的三种情形调用父类的默认构造器构造器中使用了this()调用本类中重载的构造器构造器中使用了super()调用父类的构造器public

classPerson{Stringname;Stringsex;intage; publicPerson(){ System.out.print("构造器Person()被调用"); } publicPerson(StringtheName){System.out.print("构造器Person(Stringname)被调用");name=theName;System.out.println("name="+name+",age="+"age"+"sex="+sex); }

publicPerson(StringtheName,inttheAge){System.out.print("构造器Person(StringtheName,inttheAge)被调用");name=theName;age=theAge;System.out.println("name="+name+",age="+"age"+"sex="+sex);}{name="TonyBlair";age=50;sex="Female";System.out.println("\nPerson初始化块执行:name="+name+",age="+age+"sex="+sex);}}无参构造器Person()一个参数的构造器两个参数的构造器初始化块public

classTeacherextendsPerson{Stringdepartment;intschoolAge;Teacher(){System.out.println("构造器Teacher()被调用");}Teacher(Stringname){super(name);System.out.println("构造器Teacher(Stringname)被调用");}Teacher(inttheSchoolAge){schoolAge=theSchoolAge;System.out.println("构造器Teacher(inttheSchoolAge)被调用");}Teacher(StringtheDepartment,intschoolAge){this(schoolAge);department=theDepartment;System.out.println("构造器Teacher(StringtheDepartment,intschoolAge)被调用");}{department="教务部";System.out.println("\nTeacher初始化块执行后:name="+name+",age="+age+",sex="+sex);}}调用父类构造器调用本类重载的构造器初始化块public

classTestInit{public

static

voidmain(String[]args){Teachert1=newTeacher();System.out.println("--------------------------------");Teachert2=newTeacher("Tom");}}Person初始化块执行后:name=TonyBlair,age=50,sex=Female构造器Person()被调用Teacher初始化块执行后:name=TonyBlair,age=50,sex=Female构造器Teacher()被调用----------------------------------------------------------------Person初始化块执行后:name=TonyBlair,age=50,sex=Female构造器Person(Stringname)被调用name=Tom,age=age,sex=FemaleTeacher初始化块执行后:name=Tom,age=50,sex=Female构造器Teacher(Stringname)被调用封装类对于简单类型数据,为了和Java面向对象的思想一致,Java对它们进行了封装,使它们都有相应的封装类简单数据类型封装类booleanBooleanbyteByteshortShortintIntegerlongLongcharCharacterfloatFloatdoubleDouble封装类示例publicclassWrapperClass{ publicstaticvoidmain(String[]args){ Integeri=newInteger(10); Integerj=newInteger(10); System.out.println(i==j); }}1010ij自动装箱/拆箱IntegeriObject=newInteger(100);IntegeriObject=100;非法!Jdk5.0以前合法,自动装箱Jdk5.0中inti=newInteger(100);合法,自动拆箱Jdk5.0中将简单类型数据自动转换成对应封装类型将封装类型自动转换成对应简单类型自动装箱/拆箱需要注意的地方:boolean类型的值所有byte类型的值在-128~127之间的short类型的值在-128~127之间的int类型的值在\u0000~\u007F之间的char类型的值注意上面范围内的数据的自动装箱方式toString()方法在Object类中,定义了一个toString()方法,用于返回一个表示这个对象的字符串覆盖该方法能用来提供某对象的自定义信息简单类型使用它们的封装类,可转换成String==和equals()==和equals()都是用于相等型判断的操作符==操作符用来判断两个引用是否指的同一个对象,或者两个简单类型的值是否相等Object类的equals()方法直接用==实现可按照自己的业务需要,覆盖默认的equals()方法,在equals()方法中定义对象相等的含义String类就重写了equals()方法,用来判

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论