构造器在生成对象过程中对属性进行初始化赋值, 可重载多个构造器, 类中最少有一个隐式构造器, 如果显式定义构造器, 系统就不在提供默认的空参数的构造器, 所以在自定义构造器时, 如果需要 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;
- }
- }
来源: http://www.bubuko.com/infodetail-3373462.html