目录
为什么要有构造方法
我们知道,代码执行出的效果越接近现实世界,越说明它反应出了现实生活中的需求。例如,我们新建一个“人”class,我们为这个类附加上“人”的吃饭穿衣属性。代码运行的过程中,只要调用到了人的吃饭穿衣属性,程序就会把对应的效果呈现给用户。
的确很厉害,可是在现实世界中,很多东西不是“后天得到或学会的”,就比如人出生就有性别和年龄,这些属性是无需人为调用出来的,因为他们一直存在。
我们把这个例子应用在程序中,也就是说它实际上不能在调用方法的时候才显示,只要“人”出来了,它的性别年龄就自然而然的出来了。那么这样的代码怎么写?这就需要用到构造方法了。
构造方法
作用:构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式: 方法的名字必须和类的名字完全一致。构造方法不允许写返回值类型,void也不能写。命名格式如下
-
public 类名称(参数类型 参数名称) {
-
方法体
-
}
构造方法的使用——用个例子来体会
Person类
-
-
public
class Person {
-
private String name;
-
private
int age;
-
-
//定义Person类的构造方法
-
public Person(){
-
System.out.println(
"我是一个空参数的构造方法");
-
}
-
}
Test测试类
-
-
public
class Test {
-
-
public static void main(String[] args) {
-
Person p =
new Person();
-
}
-
-
}
打印出来的是这样的~
请看,是不是person实例化了一个对象,这个对象就像刚出生的小孩一样有性别和年龄了~~~
如何给构造方法赋值
person类
-
public
class Person {
-
private String name;
-
private
int age;
-
-
//定义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;
-
}
-
-
}
Test类
-
public
class Test {
-
-
public static void main(String[] args) {
-
Person p =
new Person(
"张三",
20);
-
-
-
//对象p调用方法getName,geAge
-
System.out.println(p.getName());
-
System.out.println(p.getAge());
-
}
-
-
}
仔细看下我们是在哪里给姓名和属性赋值的?
构造方法可重载
因为可以重载,所以当你新建一个测试类,分别调用这两个构造方法时,显示的结构是不同的~
-
//带参数的构造方法
-
public Person(String name,int age){
-
this.name = name;
-
this.age = age;
-
}
-
-
//不带参数的构造方法
-
public Person(){
-
-
}
构造方法和一般方法的区别
从定义上看:
构造方法的名字必须有固定的格式,不能更改(格式要求在上文)。而其他方法名字可以自己定义,可以有void等等。
从执行上看:
构造方法在对象创建时就已经执行了,而且只执行一次。其他方法可以自己手动调用,想调用几次就调用几次。