JAVA基础知识之构造器

一、构造器

        1、构造器本质就是一个方法,用来给类属性(类实例域)进行初始化赋值的

        2、构造器根据是否有参数分为有参构造和无参构造

        3、若类中没有构造器、那么程序会在编译时自动添加一个无参构造器,使实例域获得对应类型的默认值

        4、若类中有构造器,不管是有参还是无参,程序都不会自动添加构造器了

        5、所谓构造器也就是实例化对象时,new后面的类的方法 其本质就是构造器方法

二、无参构造器

        1、定义方式:public +类名+{}

        2、无参构造器出来的对象实例域都是一致的

当类没有设置构造器时,程序编译时自动添加一个无参的(不可见),使得实例域都是类型对应默认值

public class People
{

    /**
     * 类属性也称为类实例域
     */

    public int age;

    public String name;

    public boolean old;

    /**
     * 程序自动添加的无参构造器---注意是不可见的,只是为了实例才写出来
     */
    public People()
    {
        age=0;
        name=null;
        old=false;
    }

}

当类主动设置无参构造器时,所有实例化出来的对象,其实例域都是一致的

public class People
{

    /**
     * 类属性也称为类实例域
     */

    public int age;

    public String name;

    public boolean old;

    /**
     * 主动设置无参构造
     */
    public People()
    {
        age = 10; // 初始化赋值为10
        name = "你好"; // 初始化赋值为你好
        old = true; // 初始化赋值为真
    }
    
    

    /**
     * 实例化对象对比其实例域是否一致
     */
    public static void main(String[] args)
    {

        People a = new People();

        People b = new People();

        System.out.println(a.age);

        System.out.println(a.name);

        System.out.println(a.old);

        System.out.println("分割线");

        System.out.println(b.age);

        System.out.println(b.name);

        System.out.println(b.old);

    }

}

控制台输出:

扫描二维码关注公众号,回复: 1900836 查看本文章

三、有参构造器

        1、定义方式:public + 类名+(参数列表)+{}

        2、有参构造器,根据参数不同,构造的对象实例域不一致

        3、有参构造器和无参构造器可以共存

public class People
{

    /**
     * 类属性也称为类实例域
     */

    public int age;

    public String name;

    public boolean old;

    /**
     * 主动设置无参构造器
     */
    public People()
    {
        age = 10; // 初始化赋值为10
        name = "你好"; // 初始化赋值为你好
        old = true; // 初始化赋值为真
    }

    /**
     * 主动设置有参构造器
     */
    public People(int ages, String names, boolean olds)
    {
        age = ages; // 初始化赋值为参数
        name = names;
        old = olds;
    }

    /**
     * 实例化对象
     */
    public static void main(String[] args)
    {

        People a = new People(); // 使用无参构造

        People b = new People(20, "你好", false); // 使用有参构造

        People c = new People(30, "我好", true); // 使用有参构造

        System.out.println(a.age);

        System.out.println(a.name);

        System.out.println(a.old);

        System.out.println("分割线");

        System.out.println(b.age);

        System.out.println(b.name);

        System.out.println(b.old);

        System.out.println("分割线");

        System.out.println(c.age);

        System.out.println(c.name);

        System.out.println(c.old);

    }

}

控制台输出:



四、特别注意点:

           1、当构建一个类时,务必创建构造器(不管有参还是无参),避免程序自动添加导致实例域(如String类型)得到的是null,然后引用报错

            2、构建一个类时,可以考虑有参和无参构造器都设置,以应对多种情况

            3、若某个实例域会是固定值,那么可以使用显示初始化,如下这样实例化的对象的age都会是100

public class People
{

    /**
     * 类属性也称为类实例域
     */

    public int age=100;

    public String name;

    public boolean old;

    /**
     * 主动设置无参构造器
     */
    public People()
    {
        name = "你好"; // 初始化赋值为你好
        old = true; // 初始化赋值为真
    }

}



猜你喜欢

转载自blog.csdn.net/ai_bao_zi/article/details/80853521