zoukankan      html  css  js  c++  java
  • 封装

    未封装的对象可能会比较难堪

      直接将属性暴露出来,使用圆点运算符来存取

        d.age=2;

      但是无法确定使用者是否这样操作:

        d.age=-2;

    因此,有必要对使用者的使用权限做限制,告诉它可以怎样操作,不可以怎么操作。

    封装的手段是:

      private 修饰类的属性,使得只能本类使用,关闭了外界访问通道

      public 修饰提供两个存取方法,存取方法里面对属性进行存取,方法名格式为getXxx()、setXxx()

    之前dog类封装后代码:

    public class Dog {
       private int age;//将age属性定义为private,只能被Dog内部访问
        public int getAge() {
            return age;    }
       public void setAge(int a){
           if(0<= a || a >= 30){
                System.out.println("Wrong number of age");
               return;
            }
           age = a;
        }
    }
    public class DogTestDriven {
        public static void main(String[] args) {
           Dog d = new Dog();
           d.setAge(10);// d.setAge(-2);
            // d.age = 10; 非法
            System.out.println(d.getAge());
        }
    }
    

      

    第一点,封装后,用户只能看到你想让它看到的东西,所以隐藏了细节,比如我们让用户看不到直接的可访问的属性

    第二点,封装后,用户只能通过我们给的set方法进行数据的处理,我们在里面加入了逻辑控制了非法数据

    第三点,如果非法条件需要更改的时候,我们只需要更改提供的set方法即可实现所有注入规则的更改,增强可维护性

    封装不只是封装

      封装并不只是对属性而言,对于方法,也应该进行必要的封装,例如工具类的编写,我们只提供工具方法给外界,程序处理有关代码内部消化即可。

  • 相关阅读:
    (转)CMD指令大全
    [转]测试人员要像医生一样把要测试的程序当自己的病人一样看待一样检测!
    robotFramework学习笔记
    mysql数据库转换成数据字典的方法(整理)
    【转】PHP SQL防注入的一些经验
    性能测试基础知识(概念)
    iOS--MJRefresh的使用 上拉刷新和下拉加载
    IOS----UIScrollerView的使用
    iOS -- UILabel的高度自适应
    第二章 图像形成
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/12251199.html
Copyright © 2011-2022 走看看