11.2 默认构造方法的细节和与一般方法的区别

默认构造方法的细节:

在描述事物时,没有显示指定构造方法,在编译Java文件时,编译器会自动给class文件中添加默认的构造方法。如果在描述类时,我们显示指定了构造方法,那么,当在编译Java源文件时,编译器就不会再给class文件中添加默认构造方法。

class  Person{

    //如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法

    //Person(){}  //空参数的默认构造方法

}

当描述的事物在创建其对象时就要明确属性的值,这时就需要在定义类的时候书写带参数的构造方法。若创建对象时不需要明确具体的数据,这时可以不用书写构造方法(不书写也有默认的构造方法)。

构造方法的细节:

1、一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的

2、构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象。

class Person {

    private intage;

    private String name;

    // 私有无参数的构造方法,即外界不能通过new Person();语句创建本类对象

    private Person() {

    } 

    // 多个构造方法是以重载的形式存在

    Person(int a) {

        age = a;

    }

    Person(Stringnm, int a) {

        name =nm;

        age = a;

    }

}


构造方法与一般方法的区别:

构造方法在对象创建时就执行了,而且只执行一次。

一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用。


实例代码:

/*
 *   构造方法的重载特性
 *     参数列表不同
 */
public class Person {
private String name;
private int age;

//写空参数构造方法
public Person(){

}

//写带有两个参数的构造方法
public Person(String name,int age){
this.name = name;
this.age = age;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

public class Test {
public static void main(String[] args) {
//创建Person类的对象
//就是在调用他的构造方法

//1. 调用空参数构造方法,创建对象
Person p1 = new Person();
p1.setAge(18);
p1.setName("旺财");
System.out.println(p1.getName()); 
System.out.println(p1.getAge()); 

//2. 调用有2个参数的构造方法,创建对象
Person p2 = new Person("小强", 17);
System.out.println(p2.getName());
System.out.println(p2.getAge());

}
}

运行结果:


猜你喜欢

转载自blog.csdn.net/southdreams/article/details/80038066