Java面向对象_封装的概述
一、封装的概述
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
**1.好处**
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性
**2.封装原则**
将不需要对外提供的内容都隐藏起来
把属性隐藏起来,提供公共方法对其访问
二、如何去理解隐藏和提高安全性呢?通过一个例子
class Student {
//姓名
String name;
//年龄
private int age;
//写一个方法对数据进行校验
/*
返回值类型:void
参数列表:int a
*/
public void setAge(int a) {
if(a < 0 || age > 120) {
System.out.println("你给的年龄有问题");
}else {
age = a;
}
}
//show()方法,显示所有成员变量值
public void show() {
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
}
}
class StudentDemo {
public static void main(String[] args) {
//创建学生对象
Student s = new Student();
s.show();
System.out.println("--------------");
//给成员变量赋值
s.name = "林青霞";
//s.age = 27;
s.setAge(27);
s.show();
System.out.println("--------------");
//给age赋值
//s.age = -27; //这个数据是不合理的
//通过方法给值
s.setAge(-27);
s.show();
System.out.println("--------------");
}
}
我们对例子进行一下解析,首先这里有两个类,一个Student类和一个StudentDemo类
Student类:
学生姓名:name(默认权限,同一个包下的类都可以访问)
学生年龄:age(private私有成员变量,只能在本类中使用)
show()方法(public公有的成员方法)
StudentDemo类:
是一个单纯的测试类,在创建完学生对象后,可以修改其属性,修改的方式有两种
一种直接赋值,一种是通过set方法
//给成员变量赋值
s.name = "林青霞";
//s.age =-27;
s.setAge(27);
从上面两种赋值方式我们可以看到,直接赋值带来的后果是无论修改的是否合理,都可以修改,并且成功
而set方法就可以在方法中限制数据的规范。
问题是,如果人家就是不使用set方法呢?还是得任人宰割,这是很可怕的
所以,就把成员变量设置成private,意思这是我私有的,不想给你看到的,你想改就使用set方法吧!
这其实就是封装了。
还没有评论,来说两句吧...