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方法即可实现所有注入规则的更改,增强可维护性

    封装不只是封装

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

  • 相关阅读:
    C#深入浅出 修饰符(二)
    HDU 5785 Interesting
    HDU 5783 Divide the Sequence
    HDU 5781 ATM Mechine
    UVA 714 Copying Books
    uva 1471 Defense Lines
    UVA 11134 Fabled Rooks
    UVA 11572 Unique Snowflakes
    UVA 11093 Just Finish it up
    UVA 10954 Add All
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/12251199.html
Copyright © 2011-2022 走看看