您好,欢迎访问三七文档
构造方法如何为基本类型的变量赋初始值如何为对象赋初始值?一个对象可能含有许多个变量,赋初始值会很麻烦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和number3.新建另一个构造器方法,用于初始化name,number和address4.新建一个构造器方法,用于初始化name,number,address和salary5.编写测试类,分别通过不同的构造器方法生成不同的对象,并打印输出该对象的信息答案//编写测试类,分别通过不同的构造器方法生成不同的对象,并打印输出该对象的信息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-11)新建一个构造器方法,用于初始化wheelNum和power;2)新建另一个构造器方法,用于初始化wheelNum和power和personNum3)新建一个构造器方法,用于初始化wheelNum和power和personNum,speed4)编写测试类,分别通过不同的构造器方法生成不同的对象,并打印输出该对象的信息上机练习面向对象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和salary3.编写测试类,生成两个对象,并输出该对象的信息生活中的方法重载类方法方法参数方法实现司机轿车巴士火车驾驶启动、行驶、……等待乘客上车、启动、行驶、到站停车、……正点发车、行驶、到站停车、……如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同方法重载的代码示例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
本文标题:构造方法
链接地址:https://www.777doc.com/doc-3130697 .html