![6c3801287e89005d0c13ed9cbf2dd066.png](https://img-blog.csdnimg.cn/img_convert/6c3801287e89005d0c13ed9cbf2dd066.png)
封装_static
一、 构造方法
构造方法是一种特殊的方法,专门用于构造/实例化对象,形式
[修饰符] 类名( ) { }
例: public car( ) { }
构造方法根据是否有参数分为无参构造和有参构造。
有参构造和无参构造是方法重载关系。
1.无参构造
无参构造方法就是构造方法没有任何参数。构造方法在创建对象(new Dog())调用,无参构造方法中一般用于给属性赋值默认值。
public class Dog{
String name;
int health;
int love;
String strain;
public Dog(){
System.out.println("构造方法");
health = 100;
love = 0;
}
…
}
如果开发中没有定义无参构造方法,jvm默认给类分配一个无参构造,形如
public Dog(){
}
2.有参构造
当构造/实例化一个对象时,可以向构造方法中传递参数,这样的构造方法称为有参构造。形如:
[修饰符] 类名(Type arg1,Type arg2,…){
// 初始化代码
}
(1).局部变量和成员变量优先级
如果在一个作用域中,局部变量和成员变量同名,局部变量的优先级更高。
public class Dog{
String name;
int health;
int love;
String strain;
public Dog(String name,int health,int love,String strain){
name = name;
health = health;
love = love;
strain = strain;
}
}
优化后
public class Dog{
String name;
int health;
int love;
String strain;
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);
}
}
(2)有参构造常见问题
如果一个类提供了有参构造方法,jvm不再给类默认分配无参构造。
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();
dog.name = name;
dog.hea