06-构造函数和封装
-
构造方法: (构造函数) 用于对象的创建(实例化对象)
-
特点:
- 方法名和类名相同
- 系统默认提供一个默认的无参构造
- 用于对象的创建(实例化对象)
- 就算没有返回值类型,也不可以写void; 但是可以得到一个对象的引用
-
注意事项:
- 系统会默认分配一个无参构造, 用于创建对象, 但是一旦手动编写构造方法的之后,无参构造方法,系统将你早分配,
- 如果用户需要无参构造,需要手动编写无参构造
-
构造方法和实例方法的异同:
-
构造方法: 方法名和类名相同,没有返回值也不可以写void, 系统自动生成,如果手动创建构造方法,则系统不创建 作用: 创建对象
-
实例方法: 名称任意,没有返回值类型是必须写void
作用: 表示对象的行为,由对象打点的方法调用 同一个对象可以调用多次
-
public class Person { //编写类
//[1]编写属性
public String name ;
public int age; //
//[2]编写方法
public void Person(){ //自我介绍
System.out.println(name+age);
}
//无参构造方法
public Person(){
}
//有参数构造方法
public Person(String name,int nianling){ // 变量声明在方法中是局部变量.声明在类中方法外:成员变量
this.name = name; //当局部变量和成员变量的同名时,this表示成员变量. ()不同名时this可以省略
age=nianling; //将局部变量赋给成员变量 .
}
}
- 封装: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和方法
- 将属性进行私有化
- 编写取值赋值方法
- 在设置值的地方假如逻辑判断
public class Dog { //编写类名
//[2]编写属性
private String name; //昵称
private int health;//健康值
private int love;//亲密值
private String strain = "哈士奇";// 品种
//[3]编写方法
public void info(){
System.out.println("我的昵称是:"+name+",健康值:"+getHealth()+",亲密值:"+love+",品种:"+strain);
}
//无参构造
public Dog(){
}
//有参构造
public Dog(String name,int health,int love,String strain){
this.name=name;
setHealth(health);
this.love = love;
this.strain = strain;
}
//编写取值赋值方法
public void setName(String name){ //设置名字
this.name=name;
}
public String getName(){
return name;
}
public void setHealth(int health){
if(health<0||health>100){ //不正确的情况
System.out.println("对不起,您输入的健康值有误,默认设置为60");
this.health = 60;
}else{ //正确
this.health = health;
}
}
public int getHealth(){
return health;
}
}