作用:封装的主要作用是解决安全问题,带有私密性
概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
1.修改属性的可见性
这边我们要引入 private这个关键字
public class Person{
private String name; //定义姓名
private String gender;//性别
private int age; //年龄
}
这里面我们将public修改为private后,其他类就无法访问了,如果访问则需要进行封装的第二步,也就是setter/getter()方法
2.setter/getter()方法
以上面的代码为例我们添加封装后就是
public class Person{
private String name; //定义姓名
private String gender;//性别
private int age; //年龄
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public String getGender(){
return gender;
}
public void setGender(){
this.gender=gender;
}
public int getAge(){
return age;
}
public void setAge(){
this.age=age;
}
}
这里面的get和set方法可以手动添加,也可以使用组合键alt+ins然后选择get and set点进去把需要封装的对象全部选择即可。
3.设置属性的存取限制
既然我们上面的封装已经做好了,理论上我们在其他类是看不到的,那我们要想调用这里的属性或者方法时就得需要:
public class Person{
private String name; //定义姓名
private String gender;//性别
private int age; //年龄
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public String getGender(){
return gender;
}
public void setGender(){
this.gender=gender;
}
public int getAge(){
return age;
}
public void setAge(){
this.age=age;
}
}
//以下我们重新建一个Test类
public class Test{
public static void main(String[]args){
Person p=new Person();
p.setName("张三");
p.setGender("男");
p.setAge(30);
System.out.println("姓名:"+p.getName+",性别:"+p.getGender+",年龄:"+p.getAge)
}
}
//输出的结果就是
姓名:张三,性别:男,年龄:30
这里面我们还可以对set里面的方法设置一些判断条件,避免后面调用赋值的时候发生我们不想要的结果,比如:
public String getGender(){
return gender;
}
public void setGender(){
if(!setGender.equals("男")&&!setGender.equals("女")){
gender="男";
}
this.gender=gender;
}
//这里我在性别里面就多了个条件判断,如果后面对gender赋值的不是男也不是女则默认为男



