Java构造方法
构造方法是类的一种特殊方法,
用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用。
Java 中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。
特点:
- 方法名必须与类名相同
- 可以有 0 个、1 个或多个参数
- 没有任何返回值,包括 void
- 默认返回类型就是对象类型本身
- 只能与 new运算符结合使用
注意:
如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。
构造方法不是没有返回值吗?为什么不能用 void 声明呢?
简单的说,这是 Java 的语法规定。实际上,类的构造方法是有返回值的,当使用 new 关键字来调用构造方法时,构造方法返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意不要在构造方法里使用 return 来返回当前类的对象,因为构造方法的返回值是隐式的。
注意:
构造方法不能被 static、final、synchronized、abstract 和 native(类似于 abstract)修饰。构造方法用于初始化一个新对象,所以用 static 修饰没有意义。构造方法不能被子类继承,所以用 final 和 abstract 修饰没有意义。多个线程不会同时创建内存地址相同的同一个对象,所以用 synchronized 修饰没有必要。
构造方法的语法格式
class class_name {
public class_name(){} // 默认无参构造方法
public ciass_name([paramList]){} // 定义构造方法
…
// 类主体
}
每个类可以具有多个构造方法,但要求它们各自包含不同的方法参数。
有参,无参的构造方法
构造方法主要有无参构造方法和有参构造方法两种,示例如下:
public class MyClass {
private int m; // 定义私有变量
MyClass() {
// 定义无参的构造方法
m = 0;
}
MyClass(int m) {
// 定义有参的构造方法
this.m = m;
}
}
总结:
- 构造方法作用就是对类进行初始化。如:
class a {}//没有任何构造函数。
- 构造函数的名称必须与类名相同,包括大小写;
- 构造函数没有返回值,也不能用void修饰.
- 一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
- 构造方法可以重载,以参数的个数,类型,顺序。
代码举例:
class Person //人类{
public Person(String n,int a) //构造方法
{
name = n; age = a;
}
private string name;
private int age;
}
static void main(String[] args){
Person p = new Person("张三",14);//这就是作用,为其初始化
}
new一个对象的时候要用到构造函数,
举例:
Hello hello = new Hello();//这时调用的是Hello的无参数构造方法;
Hello hello = new Hello("hi");//这个是调用Hello有参数构造方法,
如果Hello类中已经有了一个有参数的构造方法,这时再使用 Hello hello = new Hello();
来创建对象的时候就会出错,所以有参数的构造方法就最好加一个无参数的构造方法.