




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章构造方法与方法重载回顾对象由属性(数据)和方法(函数)组成;类是具有相同属性和方法的对象的集合;封装可以隐藏对象实现的细节部分;对象是引用数据类型,使用new运算符创建对象实例,使用成员运算符访问对象中的成员;本章相关词汇(蓝色为关键字)单词说明this这,这个overloaded重载,超载overloadedmethod方法重载Java中的方法在Java中,函数直接定义即可;Java中,函数被称为方法;定义一个方法的一般形式:
[访问权限]返回值类型方法名称(形参列表){
方法主体; }我们更关注的是方法原型,对于方法原型的三个主要组成部分应当明确区分:返回值类型方法名称形式参数方法原型在Java中定义方法/*Java中的方法示例代码片段*//*定义求平方值的方法*/public
intsquare(intx){
return(x*x);}返回值类型方法名称形式参数案例/*编写求绝对值的方法来求整数的绝对值*//*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);}}方法的定义方法的调用修改案例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);}}如果还要求其它类型的绝对值,就需要定义更多的方法,这对于调用者来说,将会是非常麻烦的事情。方法重载用于定义一组方法,这些方法具有相同的名称,并执行类似的操作,但是却使用不同的参数列表;编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法,如:/*abs方法的重载*/intabs(intx){……}floatabs(floatx){……}doubleabs(doublex){……}longabs(longx){……}方法重载的三大原则方法名相同参数不同(可以有三方面的不同)数量不同类型不同顺序不同同一作用域温馨提示:方法重载跟方法的返回值类型没有任何关系。也就是说,只有返回值不同的方法不能构成重载。/*错误的方法重载*/voidfun(intx){……};intfun(intx){……};方法重载的两种方式之一利用不同数据类型的参数重载;对于带有相同数量参数但参数类型不同的重载方法,编译器可以区分它们,如:只要所有参数式样都是唯一的,就可以使用多个重载;很多编程语言已经重载了输出方法,以便您可以用相同的函数名称输出任何类型的数据。intsquare(intx){……}floatsquare(floatx){……}doublesquare(doublex){……}方法重载的两种方式之二利用不同数量的参数重载,如:将调用与参数最匹配的方法,如果没有方法得出最佳匹配,那么编译器将报错;编译器解决重载的方式与方法定义的顺序无关;重载不考虑方法的返回值类型。/*函数定义*/intfun(intn1){……}intfun(intn1,intn2,intn3){……}/*函数调用*/fun(a);fun(x,y,z);方法重载的作用域规则只有属于同一作用域范围内的方法才能构成重载。classFirst{……public
voidshow(){……}……}classSecond{……public
voidshow(intx){……}……}不构成重载课堂练习2在Java中,下列方法()不能与
intfun(intx){……}
构成方法重载。intfun(intx,inty){……}floatfun(intx){……}intfun(floatx){……}intfun(intx,inty,intz){……}关于方法重载的重要提示请勿将功能完全不一样的方法进行重载!构造方法在上例中,只能逐个地为数据成员赋值,如果想在对象实例化的同时就初始化成员属性,就使用到了构造方法;构造方法是特殊的成员方法,它与类同名,在对象实例化时由虚拟机自动调用;请注意:构造方法没有返回值类型,也不能有返回值。构造方法示例/*定义ConstructorDemo类,对构造方法进行测试*/classConstructorDemo{
/*构造方法,方法名与类名完全一致无需指定返回值类型,也不能有返回值*/
publicConstructorDemo(){System.out.println("这是构造方法");}}/*Test类,用来容纳main方法一般将包含有main方法的类声明为public*/public
classTest{
/*main方法,程序入口*/
public
static
voidmain(String[]args){
/*实例化ConstructorDemo类的对象*/ConstructorDemocd=newConstructorDemo();}}为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();//将信息打印出来
}}构造方法(续)每个对象在生成时都必须执行构造方法,而且只能执行一次;如果构造方法调用失败,那么对象也无法创建;不可以显式地直接调用构造方法;在没有定义构造方法的情况下,类会自动产生一个无参数的默认构造方法,这个默认的构造方法什么都不做;一旦显式地定义了构造方法,默认构造方法自动消失。重载构造方法示例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);}}重载构造方法示例(续)/*测试时间类*/public
classTest{
/*main方法,程序入口*/
public
static
voidmain(String[]args){
//分别调用不同的构造方法来初始化时间对象
MyTimet1=newMyTime();//调用重载方式1t1.display();MyTimet2=newMyTime(8);//调用重载方式2t2.display();MyTimet3=newMyTime(8,30);//调用重载方式3t3.display();MyTimet4=newMyTime(8,30,30);//调用重载方式4t4.display();}}/*使用重载构造方法可以使初始化对象的方式灵活机动,大大方便类的使用者。*/this引用示例/*this示例,代码片段*/public
classStudent//定义学生类{
privateStringmName;//姓名
private
intmAge;//年龄
publicStudent(Stringname
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省本溪市县级重点高中协作体2024-2025学年高二下学期第一次月考地理试题(解析版)
- 江西省九江市2024-2025学年高一下学期期末考试地理试题(解析版)
- 江苏省徐州市2024-2025学年高一下学期期中考试地理试卷(解析版)
- 2025广东惠州市博罗县石湾中学招聘临聘教师笔试备考试题及答案解析
- 2025甘肃人力资源服务大市场招聘备考试题及答案解析
- 2025贵州习酒投资控股集团有限责任公司招聘考试备考试题及答案解析
- 2025福建泉州市直有关学校招聘编外合同教师11人备考题库及答案解析
- 2025北京建工新型建材有限责任公司招聘笔试备考题库及答案解析
- 2025广东广州医科大学呼吸疾病全国重点实验室彭杨课题组科研助理招聘备考题库及答案解析
- 2025广东清远市清城区广清玉岩学校临聘教师招聘备考题库及答案解析
- 活动成都热波zebra音乐节营销策划方案5月1日5月3日
- 四链融合:新质生产力的深度路径
- 2024年(IPA)国际注册对外汉语教师资格认证考试真题卷(含答案)
- 2025-2026学年外研版(三起)(2024)小学英语三年级上册教学计划及进度表
- 2025年中山市三角镇人民政府所属事业单位招聘事业单位人员模拟试卷及1套完整答案详解
- 云南省楚雄彝族自治州佳汇公证处招聘公证员笔试模拟试题参考答案详解
- 2025至2030年中国电力巡检无人机行业市场竞争格局及投资前景展望报告
- 食用菌工厂化种植基地建设方案
- 2025年小学生“学宪法讲宪法”网络活动知识竞赛题库(含答案)
- 小学思政课《爱国主义教育》
- 工序质量报验单
评论
0/150
提交评论