package test;
public class User {
private int age;
public static void main(String[] args) {
//创建User对象
User user = new User();
//修改年龄值
user.age=20;
//访问age
//读取年龄值【get】
System.out.println("该用户年龄:" +user.age);
//修改年龄值,下面输出的是修改后的年龄值
user.age=100;
System.out.println("该用户年龄:" +user.age);
//这里的age属性显然是完全暴露给外部程序的,对于程程序员来说可以操作User对象当中所有的细节,
//导致User中部分数据不安全。
//不建议这样,建议User类型进行封装,在外部程序中不能随意访问User对象当中的属性
//这样可以保证属性的安全性
user.age=-200;
System.out.println("该用户年龄:" +user.age);
}
}
对于如上示例程序来说:
User类中的age属性在外部程序中可以随意访问,导致age属性的不安全。一个User对象表示一个用户,用户的年龄不可能为负数,程序当中给定的年龄为负数,但是运行的时候没有报错,这是当前程序的缺陷,所以需要封装。
面向对象包括三大特征:
1,封装;2,继承;3,多态;
封装的好处:
1,封装之后,对于那个事物来说,看不到事物的复杂的那一面,只能看到简单的一面。比如电视机的内部构造与遥控器之间的联系。
2,封装之后才会形成真正的对象,真正的独立体;
3,封装意味着程序可以重复使用,并且该程序适应性强,很多情况下都可以使用;
4,封装之后,对于程序本身,提高了安全性;