Java类的构造方法

来自CloudWiki
Cloud17讨论 | 贡献2018年3月26日 (一) 15:14的版本
跳转至: 导航搜索

什么是构造方法

除了上文说的普通方法之外,Java类还包括一种特殊的方法,叫做构造方法。

构造,英文名construction ,是建造、创造的意思。每次在创建实例变量,对类中的所有变量都要初始化是很乏味的。如果在一个对象最初被创建时就把对它的设置做好,程序将更简单并且更简明。所有我们引入了构造方法。构造方法的作用是创建一个对象并对其完成初始化。

具体说来,我们创建一个对象的时候,都要用到new语句,比如Consumer c= new Consumer();这个时候new语句都会隐式的调用一个构造方法,完成对象的初始化工作。调用的这个构造方法的名称必须与类同名,比方说,类名叫Consermer,构造方法名也叫Consumer()

public class Consumer {
    String name ;
    int age;
    String job;
    public Consumer(){
    	
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Consumer c= new Consumer();
	}

}
每个类都有构造方法,没有例外。如果没有显式地为类定义构造方法((像上一节一样)。Java编译器将会为该类提供一个默认构造方法,只是我们看不到罢了。

构造方法的多样性

一个类可以有多个构造方法。


  1. 它的名字必须与它所在的类的名字完全相同。
  2. 不返回任何数据类型,也不需要使用void声明。
  3. 它的作用是创建对象并初始化成员变量。
  4. 在创建对象时,系统会自动调用类的构造方法。
  5. 构造方法一般都用 public来声明,这样才能在程序任意位置创建对象。
  6. 每个类至少有一个构造方法。如果不写构造方法,Java 将提供一个默认的不带参的方法体为空的构造方法。
  • 构造方法定义格式:
[访问权限] 类名称([参数1,参数2,……]) {
     //程序语句 ;
     //构造方法没有返回值
 }

【经验】

  • 如果类中显性的定义了构造方法,那么系统不再提供默认的不带参的方法体为空的构造方法。若对一个已完成的程序进行扩展,因某种需要而添加了一个类的构造方法,由于很多其他类原先使用默认构造方法,这势必会导致找不到构造方法的错误。解决的方法就是把默认的构造方法显性的写出来。
  • 当构造方法定义完毕后就可以通过创建对象来对属性进行初始化操作。一般情况下需要结合new实例化操作,使用传递实参的形式进行。

【实例3-4】使用构造方法对Person类的两个属性进行初始化,并打印各个对象的属性值。

public class Person {
	String name;
	int age;
	//默认的构造方法需要显性的写出来
	public Person(){
	}
	//带参的构造方法来初始化属性 
	public Person(String myName,int myAge){ 
		name= myName;
		age= myAge;
	}
}
public class TestNewPerson {
	public static void main(String[] args){
		//通过new操作并传入实参来实现属性的初始化和对象的实例化
		Person p1=new Person ("张三",20); 
		Person p2=new Person ("李四",30);
		System.out.println("我是:"+p1.name+",今年:"+p1.age+"岁");
		System.out.println("我是:"+p2.name+",今年:"+p2.age+"岁");
	}
}

程序运行结果如下:

我是:张三,今年:20岁
我是:李四,今年:30岁

返回 Java程序设计