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;
	}
}

  

 

posted @ 2020-01-09 20:46  追忆枉然  阅读(167)  评论(0编辑  收藏  举报