构造方法

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

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

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

资源描述

构造方法如何为基本类型的变量赋初始值如何为对象赋初始值?一个对象可能含有许多个变量,赋初始值会很麻烦Java允许对象在他们被创造时初始化自己,也就是为对象中的各个变量赋初始值,这种自动的初始化是通过使用构造函数来完成的。构造方法★★1.构造方法的作用2.构造方法的特点:无返回值,无void方法名与类名相同仅在创建对象new时调用构造器:对象初始化类的声明类体成员变量构造器成员方法程序Student.java1.ClassStudent{IntstuNumber;StringstuName;charsex;intage;voidenrol(){String注册=‘是';System.out.println(学生+stuName+已注册入学);}2.publicstaticvoidmain(Stringargs[]){3.Student小强=newStudent();4.小强.stuName=“何小强;5.小强.stuNumber=110011;6.小强.sex='男';7.小强.age=20;8.小强.enrol();9.}10.}publicclassStudent{intstuNumber;StringstuName;charsex;intage;voidenrol(){String注册=是;System.out.println(学生+stuName+已注册入学);}publicStudent(Stringnam,intnum,charsex,intage){stuName=nam;stuNumber=num;sex=sex;age=age;}publicstaticvoidmain(Stringargs[]){Student小强=newStudent(何小强,110011,'男',20);}}使用构造器方法后:对象初始化变得简洁。Student小强=newStudent(“何小强“,110011,'男',20);Student小王=newStudent(“王笑天“,110012,'男',20);Student小刘=newStudent(“刘鸿儒“,110013,'男',20);Student小明=newStudent(“吉小明“,110014,'男',20);Student小丽=newStudent(“朱丽丽“,110015,‘女',20);Student小婷=newStudent(“徐婷婷“,110016,'女',20);Student小左=newStudent(“左永前“,110017,'男',20);构造方法为什么案例4-3程序中没有定义构造方法却能正常工作?如果不显式为类定义一个构造函数,Java将为该类创建个默认的构造函数。默认构造函数自动地将所有的实例变量初始化为默认值。一旦你定义了你自己的构造函数,默认构造函数将不再被使用。构造函数有几种类型?This关键字当方法需要引用调用它的对象,就可以用this。This可在引用当前对象的所有方法内引用。This关键字【案例4-4】使用构造方法创建盒子【学习目标】掌握构造方法的特征以及作用【案例描述】为案例4-4描述的Box类添加构造方法This关键字classBox{doublewidth;doubleheight;doubledepth;//以下是无参数的构造方法,为属性赋一个默认值publicBox(){width=10;height=10;depth=10;}//以下是带参数的构造方法,属性的值是根据参数值来确定的publicBox(doublewidth,doubleheight,doubledepth){this.width=width;this.height=height;this.depth=depth;}//计算盒子的容积并把结果返回doublevolume(){returnwidth*height*depth;}}This关键字例如:在案例4-4中,代码17~19行{this.width=width;this.height=height;this.depth=depth;}为了区分实例变量和局部变量,用到了this关键字,this.width指实例变量width,以区分参数width。如果成员变量与局部变量名字相同,则成员变量被屏蔽,即这个成员变量在这个方法内暂时失效;如果要在该方法中使用成员变量,必须使用关键字this。classTriangle{floatsideA,sideB,lengthSum;voidsetSide(floatsideA,floatsideB){this.sideA=sideA;this.sideB=sideB;}}练习1.构建一个Employee类,具有如下成员变量name,number,address,salary;2.新建一个构造器方法,用于初始化name和number3.新建另一个构造器方法,用于初始化name,number和address4.新建一个构造器方法,用于初始化name,number,address和salary5.编写测试类,分别通过不同的构造器方法生成不同的对象,并打印输出该对象的信息答案//编写测试类,分别通过不同的构造器方法生成不同的对象,并打印输出该对象的信息publicstaticvoidmain(String[]args){Employeee0=newEmployee();System.out.println(name:+e0.name+\tnumber:+e0.number+\taddress:+e0.address+\tsalary+e0.salary);Employeee1=newEmployee(张三,001);System.out.println(name:+e1.name+\tnumber:+e1.number+\taddress:+e1.address+\tsalary+e1.salary);}}提问每当要输出一个对象的信息时都要写println语句,有没有更好的办法?试改进程序结论Java语言是通过构造方法来初始化一个对象的。构造方法(Constructor),是用来初始化对象以便对象在创建后可以立即使用的特殊方法。系统在产生对象时会自动执行构造方法。构造方法主要有以下特点:构造方法的方法名与类名相同;构造方法没有返回类型(修饰符void也不能有);构造方法通常被声明为公有的(public);构造方法的主要作用是完成对象的初始化工作。上机练习用构造方法完善书P48案例4-11)新建一个构造器方法,用于初始化wheelNum和power;2)新建另一个构造器方法,用于初始化wheelNum和power和personNum3)新建一个构造器方法,用于初始化wheelNum和power和personNum,speed4)编写测试类,分别通过不同的构造器方法生成不同的对象,并打印输出该对象的信息上机练习面向对象1.类与对象的关系?类是一种复杂的数据类型,不但包含数据,还包含了对数据进行操作的方法,方法反映的是数据的行为。对象是类的实例,它是类的变量,它与类密切相关,没有脱离对象的类,也没有不依赖于类的对象。2.类的创建类名{属性;方法;}Student{stuName;voidsetStuName(){};}对象的创建对象对象是一个动态概念,具有产生、使用和消亡的生命周期通过new操作符创建对象对象属性的使用:对象名.属性;对象方法的使用:对象名.方法名();当对象不再使用时,将由系统的垃圾回收机制进行回收。程序Student.java1.ClassStudent{IntstuNumber;StringstuName;charsex;intage;voidenrol(){Stringx=“是”;System.out.println(学生+stuName+已注册入学);}2.}3.classStudentTest{4.publicstaticvoidmain(Stringargs[]){5.Student小强=newStudent();6.小强.stuName=“何小强;7.小强.stuNumber=110011;8.小强.sex='男';9.小强.age=20;10.小强.enrol();11.}12.}构造函数1.构造方法的作用:给对象赋初值2.构造方法的特点无返回值,无void方法名与类名相同仅在创建对象new时调用课堂复习1.构建一个Employee类,具有如下成员变量name,number,address,salary;2.建一个构造器方法,用于初始化name,number,address和salary3.编写测试类,生成两个对象,并输出该对象的信息生活中的方法重载类方法方法参数方法实现司机轿车巴士火车驾驶启动、行驶、……等待乘客上车、启动、行驶、到站停车、……正点发车、行驶、到站停车、……如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同方法重载的代码示例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.0F);Math.max(1.0,2);}}方法重载构造方法重载2-1构造方法重载是方法重载的典型示例publicclassAccpTeacher7{privateStringname;//教员姓名privateStringschool=北京中心;//所在中心publicAccpTeacher7(Stringname){this.name=name;//设定教员姓名}publicAccpTeacher7(Stringname,Stringschool){this.name=name;//设定教员姓名this.school=school;//设定教员的所在中心}publicStringintroduction(){return大家好!我是+school+的+name;}}构造方法重载构造方法重载2-2通过调用不同的构造方法来表达对象的多种初始化行为例如:默认情况下,教师来自北京中心,初始化时,只需提供教员姓名有时,需要提供所在中心名称及教员姓名publicclassAccpTeacher7Test{publicstaticvoidmain(String[]args){AccpTeacher7teacher1=newAccpTeacher7(李芳);System.out.println(teacher1.introduction());AccpTeacher7teacher2=newAccpTeacher7(张欣,天津中心);Sys

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

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

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

×
保存成功