第三章-方法、方法重载、构造方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

类的方法•方法:是类或对象的行为特征的抽象,方法是一个命名的代码块,如同数学中的函数•作用:方法只能完成一个特定的功能,它可以把程序中的特定功能组合到一起,便于多次使用。也使程序变得清晰。•声明格式:–[修饰符]返回值类型方法名([形参列表]){•局部变量声明•执行语句–}类的方法•声明格式:[修饰符]返回值类型方法名([形参列表]){局部变量声明执行语句}•返回值类型:基本数据类型或引用数据类型•方法名:符合标识符的命名规则方法名后必需加()•形参:接收方法调用者传递过来的数据,可以是基本数据类型或引用数据类型,多个参数以,号隔开•实参:调用方法时实际传递给方法的参数•方法返回值:用return语句,把一个确定的值返回给调用者,return的返回值类型必需与声明的返回值类型匹配,无返回值用void关键字值传递•Java中进行赋值操作或方法调用中传递参数时,遵循值传递的原则:•基本类型数据传递的是该数据的值本身•引用类型数据传递的是对对象的引用(句柄),而非对象本身类的方法•1、写出狮子对象的“跑”方法、“叫”方法电动玩具狮子属性:颜色:黄色行为:跑叫按此按钮,狮子开始叫按此按钮,狮子开始跑类的方法示例AutoLion类代码实现publicclassAutoLion{Stringcolor=黄色;publicvoidrun(){System.out.println(正在以0.1米/秒的速度向前奔跑);}publicStringbark(){Stringsound=大声吼叫;returnsound;}}方法体返回类型方法名称如何定义类的方法•类的方法定义类的某种行为(或功能)方法的定义方法的名称方法的主体方法返回的数据类型定义类的方法public返回值类型方法名(){//这里编写方法的主体}步骤一:定义方法名以及返回值步骤二:编写方法体方法的返回值•两种情况–如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型–如果方法没有返回值,返回类型为voidpublicclassStudent{Stringname=张三;publicvoidgetName(){returnname;}……}返回类型要匹配return表达式;编译错误作用:跳出方法给出结果方法调用•方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果•方法调用:执行方法中包含的语句对象名.方法名();2、小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作方法调用publicclassAutoLion{Stringcolor=黄色;//颜色/*跑*/publicvoidrun(){System.out.println(正在以0.1米/秒的速度向前奔跑。);}/*叫*/publicStringbark(){Stringsound=大声吼叫;returnsound;}/*获得颜色*/publicStringgetColor(){returncolor;}/*显示狮子特性*/publicStringshowLion(){return这是一个+getColor()+的玩具狮子!;}}publicclassTestLion{publicstaticvoidmain(String[]args){AutoLionlion=newAutoLion();System.out.println(lion.showLion());lion.run();System.out.println(lion.bark());}}在类的方法中调用该类另一个方法演示示例2:方法调用在main()方法中调用类的方法方法调用小结•方法之间允许相互调用,不需要知道方法的具体实现,提高了效率情况举例Student类的方法a()调用Student类的方法b(),直接调用publicvoida(){b();//调用b()}Student类的方法a()调用Teacher类的方法b(),先创建类对象,然后使用“.”调用publicvoida(){Teachert=newTeacher();t.b();//调用Teacher类的b()}publicclassStudent{publicvoidshowInfo(){return我是一名学生;}}方法的返回类型为void,方法中不能有return返回值!常见错误4-1publicclassStudent{publicdoublegetInfo(){doubleweight=95.5;doubleheight=1.69;returnweight,height;}}方法不能返回多个值!常见错误4-2publicclassStudent{publicStringshowInfo(){return我是一名学生;publicdoublegetInfo(){doubleweight=95.5;doubleheight=1.69;returnweight;}}}多个方法不能相互嵌套定义!常见错误4-3publicclassStudent{publicStringshowInfo(){return我是一名学生;}publicdoublegetInfo(){doubleweight=95.5;doubleheight=1.69;returnweight;}}publicclassStudent{intage=20;if(age20){System.out.println(年龄不符合入学要求!);}publicvoidshowInfo(){return我是一名学生;}}不能在方法外部直接写程序逻辑代码!常见错误4-4小结1•编写电池类(Cell):具有品牌属性,可以续电•编写测试类(TestCell)电池类属性:品牌行为:续电成员变量和局部变量2-1•变量声明的位置决定变量作用域•变量作用域确定可在程序中按变量名访问该变量的区域…for(inti=0,a=0;i4;i++){a++;}System.out.println(a);…代码错误a的作用域仅在for循环中成员变量和局部变量2-2变量1类型变量1;变量2类型变量2;变量3类型变量3;public返回类型方法1(){变量4类型变量4;}public返回类型方法2(){变量5类型变量5;}publicclassAutoLion{}AutoLion类的方法,其他类的方法谁能使用这些变量?方法1方法2成员变量局部变量局部变量成员变量和局部变量的区别•作用域不同–局部变量的作用域仅限于定义它的方法–成员变量的作用域在整个类内部都是可见的•初始值不同–Java会给成员变量一个初始值–Java不会给局部变量赋予初始值•在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量publicclassTest{intscore1=88;intscore2=98;publicvoidcalcAvg(){intavg=(score1+score2)/2;}publicvoidshowAvg(){System.out.println(平均分是:+avg);}}常见错误局部变量avg的作用域仅限于calcAvg()方法方法重载Overload•Java允许一个类中定义多个同名的方法,只要形参列表不同就可以,如果同一个类中包含两个或两个以上的方法名称相同,则称为方法重载•要求:–方法名相同–参数类型、个数,顺序至少有一项不同–方法的返回类型可以不相同–方法的修饰符可以不同•原则:只对不同的数据完成基本相同的任务的方法才用方法重载方法重载Overload•优点:–不必对相同的操作使用不同的方法名–有助于更轻松的理解和调试代码–易于维护代码publicclassMath{intmax(inta,intb){returnab?a:b;}doublemax(doublea,doubleb){returnab?a:b;}}Math类中两个max方法,满足重载条件生活中的方法重载类方法方法参数方法实现司机轿车巴士火车驾驶启动、行驶、……等待乘客上车、启动、行驶、到站停车、……正点发车、行驶、到站停车、……如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同方法重载的代码示例1•方法重载并不陌生•java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式publicclassTest{publicstaticvoidmain(String[]args)inti=0;charc='z';Stringstr=hello;System.out.println(i);System.out.println(c);System.out.println(str);}}PrintStreamprintln(int)println(char)println(String)……方法名相同,参数类型不同调用不同的println方法方法重载方法重载的代码示例2java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式运行时,Java虚拟机先判断给定参数的类型,然后决定到底执行哪个max()方法Mathmax(inta,intb)max(floata,floatb)max(longa,longb)max(doublea,doubleb)publicclassTest{publicstaticvoidmain(String[]args){Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);}}方法重载构造方法重载2-1•构造方法重载是方法重载的典型示例publicclassTeacher7{privateStringname;//教员姓名privateStringschool=长沙;//所在中心publicTeacher7(Stringname){this.name=name;//设定教员姓名}publicTeacher7(Stringname,Stringschool){this.name=name;//设定教员姓名this.school=school;//设定教员的所在中心}publicStringintroduction(){return大家好!我是+school+的+name;}}构造方法重载构造方法重载2-2•通过调用不同的构造方法来表达对象的多种初始化行为•例如:–默认情况下,教师来自北京中心,初始化时,只需提供教员姓名–有时,需要提供所在中心名称及教员姓名publicclassTeacher7Test{publicstaticvoidmain(String[]args){Teacher7teacher1=newTeacher7(李芳);System.out.println(teacher1.introduction());AccpTeacher7teacher2=newTeacher7(张欣,天津中心);System.out.println(teacher2.introduction());}}大家好!我是北京中心的李芳大家好!我是天津中心的张欣方法重载(常见错误)publicclassMath{intMax(inta,intb){returnab?a:b;}intmax(intb,intb){returnab?a:b;}}方法名不相同,不构成重载构造方法•构造方法是一个特殊的方法,用于创建类的对象,并完成一些初始化工作,它总是与new关键字一起使用来创建对象.•要求:–方法名必需与类名相同–不能声明返回类型–构造方法不能被子类继承,不能被static,final,abstract,native修饰•重载构造方法–当创建一个对象时,在不同的条件下,可能有不同的初始化行为,则需定义不同的构造方法构造方法•默认的构造方法–默认的构造方法是指无参数的构造方法,可分为两种•隐含的默认构造方法•程序显示定义的默认构造方法•在一个类中,没有定义构造方法,java编

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功