隐藏和封装
来源:互联网 发布:c语言编程小游戏 编辑:程序博客网 时间:2024/05/14 02:19
我们有时候会见到一些程序代码通过某个对象直接访问其属性的情形,这可能引起一些潜在的问题:如将某个Person的age属性
直接设为100,这在语法上没有任何问题,但显然违背了现实。因此,Java程序推荐将类和对象的属性进行封装。
封装是面向对象三大特征之一(另外两个是继承和多态),它指的是将对象的现状信息封装在对象内部,不允许外部程序
直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
对一个类和对象实现良好的封装,可以实现以下目的:
== 隐藏类的实现细节
== 让使用者只能通过事先预定好的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对属性的不合理访问。
== 可进行数据检查,从而有利于保证对象信息的完整性。
== 便于修改,提高代码的可维护性。
为了实现良好的封装,需要从两个方面考虑:
== 将对象的属性和实现细节隐藏起来,不允许外部直接访问。
== 把方法暴漏出去,让方法来操作或访问这些属性。
定义了上面的Person类后,该类的name和age属性只能在Person内才可以进行操作
和访问,在Person类之外只能通过各自对应的setter和getter方法来操作和访问
直接设为100,这在语法上没有任何问题,但显然违背了现实。因此,Java程序推荐将类和对象的属性进行封装。
封装是面向对象三大特征之一(另外两个是继承和多态),它指的是将对象的现状信息封装在对象内部,不允许外部程序
直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
对一个类和对象实现良好的封装,可以实现以下目的:
== 隐藏类的实现细节
== 让使用者只能通过事先预定好的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对属性的不合理访问。
== 可进行数据检查,从而有利于保证对象信息的完整性。
== 便于修改,提高代码的可维护性。
为了实现良好的封装,需要从两个方面考虑:
== 将对象的属性和实现细节隐藏起来,不允许外部直接访问。
== 把方法暴漏出去,让方法来操作或访问这些属性。
下面是一个demo
- public class Person {
- private String name;
- private int age;
- /***
- * 提供方法来操作name属性
- *
- * @param name
- */
- public void setName(String name) {
- // 执行合理性校检,要求用户名必须在2·6位之间
- if (name.length() > 6 || name.length() < 2) {
- System.out.println("您设置的人名不符合要求");
- return;
- } else {
- this.name = name;
- }
- }
- public String getName(){
- return name;
- }
- /**
- * 提供方法来操作age属性
- * @param age
- */
- public void setAge(int age){
- if(age > 100 || age< 0){
- System.out.println("您设置的年龄不符合要求");
- return;
- }else{
- this.age=age;
- }
- }
- public int getAge(){
- return age;
- }
- }
- public static void main(String[] args) {
- Person p = new Person();
- /** 因为age的属性已经被隐藏,所以下面语句将出现编译错误 */
- // p.age=100;
- /** 下面的代码不会出现编译错误,但是会提示age属性不符合要求,程序不会修改age的属性 */
- p.setAge(10000);
- System.out.println(p.getAge());//此处输出为0
- p.setAge(30);
- System.out.println(p.getAge());//此处输出为30,修改了age属性
- }
定义了上面的Person类后,该类的name和age属性只能在Person内才可以进行操作
和访问,在Person类之外只能通过各自对应的setter和getter方法来操作和访问
0 0
- 常量、封装和隐藏
- 5.4隐藏和封装
- 隐藏和封装
- 隐藏和封装
- 隐藏和封装
- 封装和信息隐藏
- [笔记]隐藏和封装
- 封装和隐藏_变量
- 赵雅智_java隐藏和封装
- 面向对象(隐藏和封装)
- 有关封装和信息隐藏的误区
- 有关封装和信息隐藏的误区
- java 第七课 隐藏和封装
- java学习笔记<二>隐藏和封装
- 有关封装和信息隐藏的误区
- 有关封装和信息隐藏的误区
- iOS编程——隐藏和封装
- JavaScript设计模式 --- 封装和信息隐藏
- win10管理员已阻止你运行此应用”解决方法
- 使用Swift实现字符串插入值
- leetcode Set Matrix Zeroes 代码解析
- Ubuntu-Python2.7下安装 scipy,numpy,matplotlib,nose
- HDU1097
- 隐藏和封装
- tiny4412之arm-linux-gcc安装
- Ubuntu Server 命令行下全是菱形
- 设计模式简介
- 构造器
- (三)swift新增一个顶部菜单导航视图(UINavigationController)
- javaMail发邮件的模板代码,如果你用网易邮箱的账号发送邮件失败的话,可以看看
- 操作系统--内存管理
- 类的继承