构造方法

作者: 许宏川 | 来源:发表于2015-06-14 01:58 被阅读625次

是否想过创建对象时发生了什么?
例如<code>Person p = new Person();</code>是在做什么?

答案是在调用类的构造方法。
构造方法也是方法吗?
是的。
在哪啊?我没有写什么构造方法啊。
就是因为你没写所以Java隐式帮你创建了。
怎么自己创建啊?
向下面这样:

public class Person {
   
    //无参构造方法
    public Person() {
       
    }
   
}

构造方法和普通方法本质是一样的,只是语法上方法名和类名相同且没有返回值类型。当你new一个Java对象时Java会去执行你的构造方法。如果自己不创建构造方法讲会隐式创建一个示例中这样的空构造方法。

怎么证明new一个新对象的时候会执行这个构造方法呢?
试一下呗,把构造方法添加方法体输出一句话,然后在Test类里测试一下:

//无参构造方法
public Person() {
    System.out.println("执行了无参构造方法");
}
Person p = new Person();

运行结果:
<pre>
执行了无参构造方法
</pre>

构造方法和普通方法一样,也可以有参数和进行方法重载。
我们给Person多加几个属性:

public class Person {
   
    public String name;
    public int age;
   
    //无参构造方法
    public Person() {
        System.out.println("执行了无参构造方法");
    }
   
    //带参数构造方法
    public Person(String name) {
        this.name = name;
    }
   
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
   
}

测试一下:

Person p = new Person();
Person zhangsan = new Person("张三");
Person lisi = new Person("李四", 22);

运行结果:
<pre>
执行了无参构造方法
执行了String name构造方法
执行了String name, int age构造方法
</pre>

示例new了三个Person对象,每次传进去的参数不一样,执行的构造方法也不要一样。所以每new一个新对象构造方法就会被执行。构造方法通常用于对对象进行初始化。

最后还有一点要注意,如果你的类里已经有构造方法时,Java将不再会自动创建一个无参且方法体为空的构造方法。
例如我把无参构造方法注释掉,然后再编译代码

/*
//无参构造方法
public Person() {
    System.out.println("执行了无参构造方法");
}
*/

编译时会出现“找不到合适的构造器”的错误。
<pre>
Test.java:4: 错误: 对于Person(没有参数), 找不到合适的构造器
Person p = new Person();
^
构造器 Person.Person(String)不适用
(实际参数列表和形式参数列表长度不同)
构造器 Person.Person(String,int)不适用
(实际参数列表和形式参数列表长度不同)
1 个错误
</pre>

本文代码下载:百度网盘

相关文章

  • scala:构造方法与apply

    scala中分主构造方法、辅助构造方法,辅助构造方法必须调用主构造方法 构造方法参数作用域 如果父类有主构造方法,...

  • 8.构造方法与析构方法

    指定构造方法,便利构造方法,构造方法嵌套convenience构造方法继承,构造方法安全性检查4原则,可失败构造方...

  • 构造方法

    构造方法A.指定构造方法;B.便利构造方法; 关系:A.子类的指定构造方法必须调用父类的构造方法;B.便利构造方法...

  • 构造方法、封装、关键字(this、static)和代码块的介绍

    1.构造方法 1.1 构造方法与成员方法的区别 构造方法分为无参构造和有参构造,其中有参构造方法和无参构造方法为方...

  • Swift 引发的一场知识暴动

    一、构造方法 在Swift中,主要有三种构造方法:系统构造方法、普通构造方法与便利构造方法。构造方法一般都是以 i...

  • Mybatis SqlSessionTemplate 实例化过程

    构造方法 SqlSessionTemplate的构造方法源代码如下,其他构造方法,都是在此构造方法上进行的重载。 ...

  • 十四、构造方法

    一、构造方法格式与特点  构造方法的格式:修饰符 构造方法名(参数列表){} 构造方法的体现: ...

  • Kotlin使用技巧

    Kotlin的构造方法分为主构造方法(primary)和次构造方法(secondary),主构造方法定义在类名之后...

  • 构造方法

    构造方法的概念 构造方法(constructor),有的地方叫做构造器或者构造函数。构造方法的作用是给对象数据进行...

  • Swift-9.构造方法初印象

    本章包含内容: 构造方法初步 常量属性和构造方法 可选属性与构造方法 结构体的构造方法 值类型的构造器代理 闭包或...

网友评论

    本文标题:构造方法

    本文链接:https://www.haomeiwen.com/subject/ybvjqttx.html