Java封装处理(private封装)
所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。简而言之就是,内部操作对外部而言不可见(保护性) 。
封装是面向对象里最复杂的概念,使用private关键字实现的封装处理只是封装的第一步。
看一段代码,无封装的程序
class Person{
public String name;
public int age;
public void printName(){
System.out.println(this.name);
}
}
public class Test{
public static void main(String[] args) {
Person person1 = new Person();
person1.name = "张三" ;
person1.age = 20;
person1.printName();
}
}
在无封装的程序中我们可以在主类中通过对象直接访问到Person类中的属性。此时,要回避此类问题,让内部操作对外部不可见(对象不能直接操作属性),可以使用private进行封装。
将姓名、年龄权限设置为private,即私有,访问权限仅限于类的内部。设置完以后我们无法通过对象直接访问名字和年龄属性了,这时我们需要留出一个访问的接口,即set、get函数。
class Person{
private String name;
private int age;
public void printName(){
System.out.println(this.name);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
}
public class Test{
public static void main(String[] args) {
Person person1 = new Person();
person1.setName("张三");
person1.setAge(20);
System.out.println("姓名" + person1.getName());
System.out.println("年龄" + person1.getAge());
}
}
其中set、get函数是public,在外部可以访问,在外部我们可以通过这2种函数实现对属性的访问,但无法直接访问到属性值。在主类中我们通过setName、getName可以访问到Person类的属性。private实现封装的最大特征在于:只允许本类访问,而不允许外部类访问。
类的设计原则
1.类中的所有属性必须使用private封装。
2.属性若要被外部访问,必须定义setter、getter方法。