Discuss / Java / 打卡

打卡

Topic source
/*
*****************************************************************************
* @authur      : tangxi.zq
* @time        : 2019-06-11
* @file         : 构造函数的用法
* @Description : 实例在创建时通过new操作符会调用其对应的构造方法,构造方法用于初始化实例;
                 没有定义构造方法时,编译器会自动创建一个默认的无参数构造方法;
                 可以定义多个构造方法,编译器根据参数自动判断;
                 可以在一个构造方法内部调用另一个构造方法,便于代码复用。
******************************************************************************
*/

public class FunctionDemo2
{
    public static void main(String[]args)
    {
        Person p = new Person("xiaoming", 15);
        System.out.println(p.getAge());
        System.out.println(p.getName());

        Person p1 = new Person("xiaoming", -15);
    }
}
class Person
{
    /*
    *在Java中,创建对象实例的时候,按照如下顺序进行初始化:
    *先初始化字段,例如,int age = 10;表示字段初始化为10,double salary;表示字段默认初始化为0,String name;表示引用类型字段默认初始化为null;
    *执行构造方法的代码进行初始化。
    *因此,构造方法的代码由于后运行,所以,new Person("Xiao Ming", 12)的字段值最终由构造方法的代码确定。
    */
    private String name = "noname";   
    private int age =  10;

    public Person()
    {

    }
    public Person(String name)
    {
        if(name == null || name.isBlank())
        {
            throw new IllegalArgumentException("bad argument!!");
        }
        this.name = name;
    }
    public Person(int age)
    {
        if(age < 0 || age > 100)
        {
            throw new IllegalArgumentException("bad argument!!");
        }
        this.age = age;
    }
    public Person(String name,int age)
    {
        if(name == null || name.isBlank()|| age < 0|| age > 100)
        {
            throw new IllegalArgumentException("bad argument!!");
        }
        this.name = name;
        this.age = age;
    }
    public String getName()
    {
        return this.name;
    }
    public int getAge()
    {
        return this.age;
    }
}

  • 1

Reply