-
什么是构造方法呢?
- 方法名和类名相同
- 没有返回值类型,连void都不能写
- 没有具体的返回值
构造方法分为无参构造方法与有参构造方法。
-
先来看一下最简单的无参构造方法:
Student.java
1 package com.pr; 2 3 public class Student { 4 public Student(){ 5 System.out.println("这是一个构造方法"); 6 } 7 }
StudentDemo.java
package com.pr; public class StudentDemo { public static void main(String[] args){ Student s = new Student(); } }
输出结果:这是一个构造方法
把Student.java的4-6行删除了。可以发现StudentDemo.java没有报错。为什么呢?
因为,如果我们没有给出构造方法时,系统会提供一个默认的无参构造方法供我们使用。
-
有参构造方法
Student.java
1 package com.pr; 2 3 public class Student { 4 private String name; 5 private int age; 6 public Student(){} 7 public Student(String name){ 8 this.name = name; 9 } 10 public Student(int age){ 11 this.age = age; 12 } 13 public Student(String name,int age){ 14 this.name = name; 15 this.age = age; 16 } 17 public void show(){ 18 System.out.println("age:"+age+",name:"+name); 19 } 20 }
StudentDemo.java
1 package com.pr; 2 3 public class StudentDemo { 4 public static void main(String[] args){ 5 Student s = new Student(); 6 s.show(); 7 Student s1 = new Student("小明"); 8 s1.show(); 9 Student s2 = new Student(20); 10 s2.show(); 11 Student s3 = new Student("小明",18); 12 s3.show(); 13 } 14 }
输出结果为:
age:0,name:null
age:0,name:小明
age:20,name:null
age:18,name:小明
把Student.java的第6行删除了,发现StudentDemo.java的第5行报错了。为什么呢?
因为,当我们给出了构造方法时,系统就不再提供默认的构造方法供我们使用。
所以,我们最好手动写一下无参的构造方法。
-
构造方法的作用:
有了类,就是有了可以重用的代码,但是我怎么产生这个对象呢。必须要实例化这个类(当然这不是唯一产生对象的途径,比如单例模式,但本质上说所有途径都是一样的)。那么就要用到构造方法。即告诉程序我现在要实例化一个对象了,你给我马上分配内存。将内存的首地址赋给我指定的类对象。而且有时候你需要传递参数到函数里面,有了构造函数就方便了。