java 构造器
构造器在生成对象过程中对属性进行初始化赋值,可重载多个构造器,类中最少有一个隐式构造器,如果显式定义构造器, 系统就不在提供默认的空参数的构造器,所以在自定义构造器时,如果需要new Person() 需写一个空参构造器,不然会报错
0.构造器定义方式
权限修饰符 构造器名(参数列表){ // 初始化代码体 }
1.隐式
public class PersonTest { public static void main(String[] args) { Person p = new Person(); System.out.println(p.age); // 0 默认值; } } class Person{ int age;
//类体存在隐式空参构造器 权限修饰符跟class相同 }
2.显式空参构造器(跟默认构造器一样 权限修饰符可以更改)
public class PersonTest {
public static void main(String[] args) {
Person p = new Person();
System.out.println(p.age); // 0
}
}
class Person{
int age;
public Person() {
}
}
3.显式有形参列表(重载)
public class PersonTest { public static void main(String[] args) { Person p1 = new Person(20); System.out.println("p1 age is :" + p1.getAge()); Person p2 = new Person("李狗蛋"); System.out.println("p2 name is :" + p2.getName()); Person p3 = new Person(18,"李狗蛋"); System.out.println("p3 age is :" + p3.getAge() + "\t name is: " + p3.getName()); } } class Person{ private int age; private String name; public Person(int age) { this.age = age; } public Person(String name) { this.name = name; } public Person(int age,String name) { this.age = age; this.name = name; } public int getAge() { return age; } public String getName() { return name; } }
4.赋值顺序
public class PersonTest {
public static void main(String[] args) {
Person p = new Person("李老八");
System.out.println("name"+p.getName());
p.setName("轩子巨二兔");
System.out.println("After setting name:" + p.getName());
}
}
class Person{
private String name; // null(默认) => “李老八”(构造器) => “轩子老师”(操作赋值)
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}