我的面向对象编程思想5
U3000 U3000
2.3.1构造函数、默认构造函数,默认构造函数
U3000 U3000
对于上面的例子,它已经能够完成大部分工作,但仍然不够完美。仍有许多细节等待我们去完善。一些学生可能已经注意到,当我创造了Jingwei的对象,该对象的所有属性都是空的,也就是说:物体的名称是不确定的,年龄是不确定的,性是不确定的,工资是不确定的,不吃午餐是的。我们想把这些属性,我们需要使用对象调用相应的方法,修改每一个!上帝,这太麻烦了!在创建对象时,有没有一种很好的方法来完成属性的赋值呢哦不,应该说是物业的初始化吗当然,没关系。它需要所谓的构造函数!
构造函数是类中最特殊的函数,它与析构函数的函数相反!
特点:1。它是编程语言中唯一没有返回值类型的函数。
2。类的名称必须与类的名称完全相同。
三.它必须被声明为公共(公共)类型。
4,构造函数可以重载。
5。它在创建对象中自动调用。
功能:1。它初始化属性的类。 U3000 U3000
事实上,我们不在程序上定义构造函数。然而,在这种情况下,系统会自动给我们定义一个默认构造函数。他自动分配变量的数值为0,将布尔变量错误等等(但在C++中,默认构造函数不初始化它的成员)如果程序员定义了一个构造函数,系统将不添加默认建立功能到您的程序。在这里,我们提倡的是构造函数的定义,非系统默认构造函数。
让我们看一个例子,比较清楚一点!
/ / employee.java
U3000 U3000
公共类雇员{
U3000 U3000
私有字符串名
U3000 U3000
私人国际年龄;雇员/雇员年龄
U3000 U3000
私人字符;性别
U3000 U3000
私人的浮动薪酬; / /员工工资
U3000 U3000
私人布尔午餐;员工午餐
U3000 U3000
等待…
U3000 U3000
公共(雇员){这是默认构造函数
U3000 U3000
名称= JW; / /设置员工的名字
U3000 U3000
年龄= 20岁;
U3000 U3000
性别=;
U3000 U3000
薪酬= 100; / /薪水
U3000 U3000
午餐=假的;
U3000 U3000
}
U3000 U3000
公共空(加热器){此方法用于处理员工午餐
U3000 U3000
午餐=真的;
U3000 U3000
}
U3000 U3000
等待…
U3000 U3000
};
这样,当我们创建Jingwei对象时,它的所有属性也都初始化了!显然,这大大提高了工作效率,但仍不能满足要求。想想如果我们现在创建这种类型的第二对象会发生什么。我告诉你,所有的属性值都是一样的只是对象的名称,而不是对象的属性的名称,但名称的对象。例如,现在我们创建二对象FlashMagic,但是我会发现这个对象的所有的属性都是完全一样的,Jingwei的,我们只可以使用对象的方法来改变书写性能!显然,这不是一个好办法!我们需要一种方法来在对象创建时给对象的属性赋予我们想要的值。
我相信你知道,默认构造函数看起来是无能为力的,我们需要的是一个带有参数的构造函数,当我们创建一个对象时,我们将参数传递给构造函数,这样可以完成上面的函数!一个例子就是单词本身是没有证据的。:
/ / employee.java
U3000 U3000
公共类雇员{
U3000 U3000
私有字符串名
U3000 U3000
私人国际年龄;雇员/雇员年龄
U3000 U3000
私人字符;性别
U3000 U3000
私人的浮动薪酬; / /员工工资
U3000 U3000
私人布尔午餐;员工午餐
U3000 U3000
等待…
U3000 U3000
公共雇员(字符串n、int a、char、浮点E、布尔l)
U3000 U3000
name = n;设置雇员名
U3000 U3000
年龄=
U3000 U3000
性=;
U3000 U3000
薪酬= E; / /薪水
U3000 U3000
午餐=工作人员午餐
U3000 U3000
}
U3000 U3000
公共空(加热器){此方法用于处理员工午餐
U3000 U3000
午餐=真的;
U3000 U3000
}
U3000 U3000
等待…
U3000 U3000
};
这样,我们可以在创建对象的时候给他想要的值,而且很明显,这样做更方便!我还没告诉你怎么做,Haha,向前翻几页,你就会看到这个:
新员工();这是一个对象的创建,我们将它更改为
新员工()(同时创建对象,我们得到我们想要的初始值)