1.1 构造方法
构造方法是一种特殊的方法,它是一个与类同名且返回值类型为同名类类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
|
构造方法根据是否有参数分为无参构造和有参构造
1.1.1 无参构造
无参构造方法就是构造方法没有任何参数。构造方法在创建对象(new Dog())调用,无参构造方法中一般用于给属性赋值默认值。
public class Dog{
String name;
int health;
int love;
String strain;
public Dog(){
System.out.println("构造方法");
health = 100;
love = 0;
}
…
}
如果开发中没有定义无参构造方法,jvm默认给类分配一个无参构造,形如
|
1.1.2 有参构造
当构造/实例化一个对象时,可以向构造方法中传递参数,这样的构造方法称为有参构造。形如:
|
1.1.2.1 局部变量和成员变量优先级
如果在一个作用域中,局部变量和成员变量同名,局部变量的优先级更高。
1 public class Dog{
2
3
4
5 String name;
6
7 int health;
8
9 int love;
10
11 String strain;
12
13
14
15 public Dog(String name,int health,int love,String strain){
16
17 name = name;
18
19 health = health;
20
21 love = love;
22
23 strain = strain;
24
25 }
26
27 }优化后
1 public class Dog{
2
3
4
5 String name;
6
7 int health;
8
9 int love;
10
11 String strain;
12
13
14
15 /*
16
17 public Dog(){
18
19 System.out.println("构造方法");
20
21 health = 100;
22
23 love = 0;
24
25 }
26
27 */
28
29
30
31 public Dog(String _name,int _health,int _love,String _strain){
32
33 name = _name;
34
35 health = _health;
36
37 love = _love;
38
39 strain = _strain;
40
41 }
42
43
44
45 public void showInfo(){
46
47 System.out.print("我的名字叫"+name);
48
49 System.out.print(",健康值"+health);
50
51 System.out.print(",亲密度"+love);
52
53 System.out.println(",我是一只"+strain);
54
55 }
56
57 }有参构造和无参构造是方法重载关系。
1.1.2.2 有参构造常见问题
如果一个类提供了有参构造方法,jvm不在给类默认分配无参构造。
|
Dog dog = new Dog();
= name;
dog.health = 100;
dog.love = 0;
dog.strain = strain;
public class Dog{
String name;
int health;
int love;
String strain;
/*
public Dog(){
System.out.println("构造方法");
health = 100;
love = 0;
}
*/
public Dog(String _name,int _health,int _love,String _strain){
name = _name;
health = _health;
love = _love;
strain = _strain;
}
public void showInfo(){
System.out.print("我的名字叫"+name);
System.out.print(",健康值"+health);
System.out.print(",亲密度"+love);
System.out.println(",我是一只"+strain);
}
}
public class Dog{
String name;
int health;
int love;
String strain;
/*
public Dog(){
System.out.println("构造方法");
health = 100;
love = 0;
}
*/
public Dog(String _name,int _health,int _love,String _strain){
name = _name;
health = _health;
love = _love;
strain = _strain;
}
public void showInfo(){
System.out.print("我的名字叫"+name);
System.out.print(",健康值"+health);
System.out.print(",亲密度"+love);
System.out.println(",我是一只"+strain);
}
}
Dog dog = new Dog();
= name;
dog.health = 100;
dog.love = 0;
dog.strain = strain;
public class Dog{
String name;
int health;
int love;
String strain;
/*
public Dog(){
System.out.println("构造方法");
health = 100;
love = 0;
}
*/
public Dog(String _name,int _health,int _love,String _strain){
name = _name;
health = _health;
love = _love;
strain = _strain;
}
public void showInfo(){
System.out.print("我的名字叫"+name);
System.out.print(",健康值"+health);
System.out.print(",亲密度"+love);
System.out.println(",我是一只"+strain);
}
}
总结:
在开发过程中,如果开发者提供了有参构造方法,一定要习惯性的提供无参构造。
















