/* ***************************************************************************** * @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; } }
Sign in to make a reply
用户5527594890