一、封装概述
·封装是面向对象三大特性之一(封装,继承,多态)
·是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问,要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
*原则:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
二、封装的实现and private与this
假若我在给成员变量赋值时,给age赋值为一个负数,这时程序又不能检测出来该怎么办?
private含义:
①private是一个权限修饰符,代表最小权限
②可以修饰成员变量和成员方法
③被private修饰后的成员变量和成员方法,只在本类中才能访问
我们把age 变量前加上private后,在其他类中就不能访问了。出现报错!
封装步骤:Ⅰ、使用private关键字来修饰成员变量。
Ⅱ、对需要访问的成员变量,提供对应的一对getXxx方法、setXxx方法。
注意:stu.show只能对数据做一个展示,stu.getName/stu.getId可以对private进行后续处理。
这时有个问题,像我们看到setName(String n)而不知到那个n啥意思,我们应该做到见名知意。
输出结果:
null
0
为啥呀?哦原来是重名了,当成员变量与局部变量重名时,Java会使用就近原则。
上面意思也就是 局部变量name 给局部变量name赋值了,咋们要把局部变量name的值赋给成员变量name.于是:
this关键字的作用:可以调用本类的成员(变量、方法)解决局部变量和成员变量的重名问题。
this:代表所在类的对象引用
注:方法被哪个对象调用,this就代表哪个对象