java语言的构造函数有什么作用?构造函数可以重载吗?举例说明
构造函数是当你创建对象时,由系统调用的;
可以重载
例子
public Class Person{
String name = null;
public Person(){};//无参构造函数
public Person(String name){//有参构造函数,重载
this.name = name;
}
}
class Test{
public static void main(String[] args){
Person p1 = new Person();//创建名字为null的人对象,调用无参构造函数
Person p2 = new Person("小明");//创建名字为小明的对象,调用有参构造函数
}
}
首先,一般来说,C/C++里面叫“函数”,Java里面叫“方法”,所以它叫“构造方法”。
构造方法的用处就是标示怎么“构造”一个实例对象。例如有这样一个学生类的定义:
class Student{
private String name;
private int age;
public Student(){
super();
}
public Student(String name,int age){
super();
this.name = name;
this.age = age;
}
}
很简单,Student类有两个属性分别为name和age,也有两个构造方法,一个是无参数的,一个是有name和age两个参数的。
那么当你需要一个Student类实例对象时,一般来说,就会用到这样的代码:
Student stu = new Student(); //创建一个学生对象
代码是很简单,不过JVM实际上是怎么执行呢?它会申请内存,创建对象,初始化对象,得到对象引用,然后把引用赋值给stu变量。这就有个问题了,如果你把你自己想象成JVM,有条命令丢过来给你说“喂,JVM,造个Student对象给我”,你是不是得知道具体怎么造这个对象?构造方法就是起这个作用的,“告诉”JVM如何去创建这类对象。
所以像刚才那行代码,JVM发现要执行的代码要创建Student对象,并且无参数,就会调用无参数的构造方法。同理,如果有以下代码:
Student zhang = new Student("张三",20); //创建一个学生对象
JVM就会去调用带name和age两个参数的构造方法了。这个构造方法除了创建一个Student对象外,在构造的时候就会根据给定的参数name、age设置正在构造的这个对象name、age属性。
构造函数是一种特殊的方法,用来创建对象的实例并初始化其参数。一般使用方法是和Java的new关键字搭配使用,创建对象实例。
构造函数可以被重载。
几点注意:
当不声明构造函数时,默认有一个无参数的构造方法。
构造函数不能有返回类型
构造函数可以是私有的,这样外部就无法由私有的构造函数创建对象