Java高级编程第02章理论课构造方法与方法重载_第1页
Java高级编程第02章理论课构造方法与方法重载_第2页
Java高级编程第02章理论课构造方法与方法重载_第3页
Java高级编程第02章理论课构造方法与方法重载_第4页
Java高级编程第02章理论课构造方法与方法重载_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

第二章构造方法与方法重载Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第1页!回顾对象由属性(数据)和方法(函数)组成;类是具有相同属性和方法的对象的集合;封装可以隐藏对象实现的细节部分;对象是引用数据类型,使用new运算符创建对象实例,使用成员运算符访问对象中的成员;Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第2页!本章相关词汇(蓝色为关键字)单词说明this这,这个overloaded重载,超载overloadedmethod方法重载Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第3页!Java中的方法在Java中,函数直接定义即可;Java中,函数被称为方法;定义一个方法的一般形式:

[访问权限]返回值类型方法名称(形参列表){

方法主体; }我们更关注的是方法原型,对于方法原型的三个主要组成部分应当明确区分:返回值类型方法名称形式参数方法原型Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第4页!案例/*编写求绝对值的方法来求整数的绝对值*//*AbsoluteValue类,其中包含求绝对值的方法Java中的任何方法都必须在类中定义*/public

classAbsoluteValue{

/*求绝对值的方法*/

public

intabs(intx){

return((x>=0)?x:-x);}

/*main方法,程序入口*/

public

static

voidmain(String[]args){

//必须先实例化类的对象,才可以调用到其中的成员方法

AbsoluteValueobj=newAbsoluteValue();

inta=-8,b;b=obj.abs(a);//调用abs方法求a的绝对值

System.out.println(a+"的绝对值是"+b);}}方法的定义方法的调用Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第5页!修改案例public

classAbsoluteValue{

/*求整数绝对值的方法*/

public

intabsOfInt(intx){

return((x>=0)?x:-x);}

/*求浮点数绝对值的方法*/

public

floatabsOfFloat(floatx){

return((x>=0)?x:-x);}

public

static

voidmain(String[]args){AbsoluteValueobj=newAbsoluteValue();

inta=-8,b;b=obj.absOfInt(a);System.out.println(a+"的绝对值是"+b);

floatc=-3.14f,d;d=obj.absOfFloat(c);System.out.println(c+"的绝对值是"+d);}}如果还要求其它类型的绝对值,就需要定义更多的方法,这对于调用者来说,将会是非常麻烦的事情。Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第6页!方法重载的三大原则方法名相同参数不同(可以有三方面的不同)数量不同类型不同顺序不同同一作用域温馨提示:方法重载跟方法的返回值类型没有任何关系。也就是说,只有返回值不同的方法不能构成重载。/*错误的方法重载*/voidfun(intx){……};intfun(intx){……};Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第7页!方法重载的两种方式之一利用不同数据类型的参数重载;对于带有相同数量参数但参数类型不同的重载方法,编译器可以区分它们,如:只要所有参数式样都是唯一的,就可以使用多个重载;很多编程语言已经重载了输出方法,以便您可以用相同的函数名称输出任何类型的数据。intsquare(intx){……}floatsquare(floatx){……}doublesquare(doublex){……}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第8页!方法重载的作用域规则只有属于同一作用域范围内的方法才能构成重载。classFirst{……public

voidshow(){……}……}classSecond{……public

voidshow(intx){……}……}不构成重载Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第9页!课堂练习2在Java中,下列方法()不能与

intfun(intx){……}

构成方法重载。intfun(intx,inty){……}floatfun(intx){……}intfun(floatx){……}intfun(intx,inty,intz){……}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第10页!构造方法在上例中,只能逐个地为数据成员赋值,如果想在对象实例化的同时就初始化成员属性,就使用到了构造方法;构造方法是特殊的成员方法,它与类同名,在对象实例化时由虚拟机自动调用;请注意:构造方法没有返回值类型,也不能有返回值。Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第11页!构造方法示例/*定义ConstructorDemo类,对构造方法进行测试*/classConstructorDemo{

/*构造方法,方法名与类名完全一致无需指定返回值类型,也不能有返回值*/

publicConstructorDemo(){System.out.println("这是构造方法");}}/*Test类,用来容纳main方法一般将包含有main方法的类声明为public*/public

classTest{

/*main方法,程序入口*/

public

static

voidmain(String[]args){

/*实例化ConstructorDemo类的对象*/ConstructorDemocd=newConstructorDemo();}}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第12页!构造方法(续)每个对象在生成时都必须执行构造方法,而且只能执行一次;如果构造方法调用失败,那么对象也无法创建;不可以显式地直接调用构造方法;在没有定义构造方法的情况下,类会自动产生一个无参数的默认构造方法,这个默认的构造方法什么都不做;一旦显式地定义了构造方法,默认构造方法自动消失。Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第13页!重载构造方法示例classMyTime{//定义时间类

private

intmHour,mMinute,mSecond;//三个成员变量,时、分、秒

publicMyTime(){//构造方法重载1mHour=0;mMinute=0;mSecond=0;}

publicMyTime(inthour){//构造方法重载2mHour=hour;mMinute=0;mSecond=0;}

publicMyTime(inthour,intminute){//构造方法重载3mHour=hour;mMinute=minute;mSecond=0;}

publicMyTime(inthour,intminute,intsecond){//构造方法重载4mHour=hour;mMinute=minute;mSecond=second;}

public

voiddisplay(){//显示时间信息的方法

System.out.println(mHour+":"+mMinute+":"+mSecond);}}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第14页!对象在内存中的存放形式成员方法1成员方法2……成员方法n成员变量1成员变量2……成员变量n成员变量1成员变量2……成员变量n成员变量1成员变量2……成员变量n对象1对象3对象2每个对象都有自己独立的数据成员,但是所有的对象共享成员方法。Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第15页!this引用示例/*this示例,代码片段*/public

classStudent//定义学生类{

privateStringmName;//姓名

private

intmAge;//年龄

publicStudent(Stringname,intage){

//隐式调用,等同于this.mName=name;mName=name;

//显式调用,等同于mAge=age;

this.mAge=age;}……}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第16页!本章目标方法重载重载构造方法对象在内存中的存放形式this关键字Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第17页!在Java中定义方法/*Java中的方法示例代码片段*//*定义求平方值的方法*/public

intsquare(intx){

return(x*x);}返回值类型方法名称形式参数Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第18页!案例分析在上面的案例中,我们已经定义了求整数绝对值的方法;但有时候,我们可能还需要求浮点数的绝对值,请问:可以继续使用这个方法吗?事实上是行不通的,这个方法只能求出整数的绝对值,对于浮点数,还需另外再定义求浮点数绝对值的方法。Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第19页!方法重载用于定义一组方法,这些方法具有相同的名称,并执行类似的操作,但是却使用不同的参数列表;编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法,如:/*abs方法的重载*/intabs(intx){……}floatabs(floatx){……}doubleabs(doublex){……}longabs(longx){……}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第20页!方法重载示例public

classAbsoluteValue{

public

intabs(intx){//重载方式1,求整数的绝对值

return((x>=0)?x:-x);}

public

floatabs(floatx){//重载方式2,求浮点数的绝对值

return((x>=0)?x:-x);}

public

doubleabs(doublex){//重载方式3,求双精度数的绝对值

return((x>=0)?x:-x);}

public

longabs(longx){//重载方式4,求长整型数的绝对值

return((x>=0)?x:-x);}

public

static

voidmain(String[]args){AbsoluteValueobj=newAbsoluteValue();

inta=-8,b;b=obj.abs(a);System.out.println(a+"的绝对值是"+b);

floatc=-3.14f,d;d=obj.abs(c);System.out.println(c+"的绝对值是"+d);}}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第21页!方法重载的两种方式之二利用不同数量的参数重载,如:将调用与参数最匹配的方法,如果没有方法得出最佳匹配,那么编译器将报错;编译器解决重载的方式与方法定义的顺序无关;重载不考虑方法的返回值类型。/*函数定义*/intfun(intn1){……}intfun(intn1,intn2,intn3){……}/*函数调用*/fun(a);fun(x,y,z);Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第22页!课堂练习1在Java中,对于成员方法

floatadd(floatf1,floatf2){……}

下面选项()是对该成员方法的重载。intadd(intn1,intn2){……}floatadd(floatf){……}floatadd(floatf2,floatf1){……}voidadd(floatf1,floatf2){……}voidadd(floatf1,floatf2,floatx){……}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第23页!关于方法重载的重要提示请勿将功能完全不一样的方法进行重载!Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第24页!构造方法正是由于在实例化对象的同时会自动调用构造方法,所以构造方法一般用来给数据成员分配资源或初始化数据成员;构造方法的一般形式:

访问权限类名(形参列表){

方法体

}因为是由虚拟机来调用构造方法,所以构造方法一般应定义成public。Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第25页!为Student类添加构造方法classStudent{//定义学生类

privateStringname;//姓名,私有

private

intage;//年龄,私有

private

floatweight;//体重,私有

//构造方法,根据传递进来的参数,为数据成员赋值

publicStudent(Stringn,inta,floatw){

//分别为每个数据成员赋初始值

name=n;age=a;weight=w;}

public

voidsetName(Stringn){……}//为姓名赋值的方法,公有,代码略

public

voidsetAge(inta){……}//为年龄赋值的方法,公有,代码略

public

voidsetWeight(floatw){……}//为体重赋值的方法,公有,代码略

public

voiddisplay(){……}//将所有信息打印出来的方法,公有,代码略

public

voiddining(){……}//吃饭的方法,公有,代码略

public

voidwalk(){……}//走路的方法,公有,代码略}public

classTest{

public

static

voidmain(String[]args){

//利用构造方法,为数据成员指定初始值

Studentstd=newStudent("张三",18,55);std.display();//将信息打印出来

}}Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第26页!重载构造方法方法重载的一个重要应用就是重载构造方法;可以定义一组构造方法,使其构成重载关系,从而方便使用者能够灵活机动地以各种不同的方式来实例化对象。Java高级编程》第02章理论课构造方法与方法重载共30页,您现在浏览的是第27页!重载构造方法示例(续)/*测试时间类*/public

classTest{

/*m

温馨提示

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

评论

0/150

提交评论