面向对象-构造函数

来源:互联网 发布:杭州淘宝网汽车拍卖 编辑:程序博客网 时间:2024/05/20 17:25

需求
为了描述事物更准确,发现事物对应的很多对象一创建就有了一些初始化的数据。
通过Java中的另一个小技术完成,就是构造函数,对象本身就是构造出来。
构造函数的作用:可以对对象创建进行初始化
构造函数在代码中的体现
1:没有返回值类型,因为构造函数,创建完成就结束,不需要结果,void也不需要写,区别于一般函数。
2:构造函数名称和类名一致
3:没有具体的返回值。

问:
没有学习构造函数是,对象已创建出来了,那么该对象是否有被构造呢?或者说是否有调用函数呢?
是的,必须调用!
那么类中那个构造函数是什么呢?
class Person
{

}
main()
{
Person p=new Person();
}
这就是已经调用了Person类中的空参数的构造函数。
类中有定义构造函数吗?有的,只要定义一个类。
该类中默认就有一个空参数的构造函数,是编辑器编译时添加到class文件中。
注意:如果在类中自定义了构造函数,那么默认的空参数构造函数编辑器就不添加了。
原理
没有定义对象的初始化过程,编辑器会添加一个默认的初始化过程。
如果定义了指定的对象初始化过程,默认的就不添加了。

构造函数的细节
1,一个类中可以有多个构造函数,它们的存在是以重载的形式体现的。
2,构造函数中也是有return语句的,用于结束初始化动作的。
3,构造函数是否能被private修饰呢?
能,作用,其他程序无法创建该类的对象。
class Person()
{
private Person(){}
}
main()
{
Person p=new Person();//创建对象,无法被初始化。
}

构造函数与一般函数的区别
1,写法不一样
2,运行上有差别。
构造函数:对象一创建就会调用对应的构造函数
一般函数:是对象创建后,才会调用所需的一般函数。
3,构造函数在对象创建时,仅调用一次(初始化动作只做一次,而且先执行),一般方法可以被对象调用多次。
举例:

class Person{    private String name;    private int age;    //定义构造函数,对象一创建就具备姓名。    Person(String n)    {        //将接受到的值赋值给对象的name        name=n;    }    public void speak()    {        System.out.println("name="+name+",age="+age);    }}public class test {    public static void main(String[] args)    {        Person p =new Person("chen");//对象创建时,必须会调用对应的构造函数。因为对象需要初始化。        p.speak();    }}

这里写图片描述
补充:构造函数之间的调用

class Person{    private String name;    private int age;    Person ()    {    }    //初始化姓名    Person(String n)    {        name=n;    }    //初始化姓名和年龄    Person(String n,int a)    {        this(n); // 调用一个字符串参数的构造函数。       // name=n;        age=a;    }}public class test {    public static void main(String[] args)    {        Person p =new Person("chen",20);//对象创建时,必须会调用对应的构造函数。因为对象需要初始化。    }}

初步接触this关键字。

0 0
原创粉丝点击