多项选择题

A.隐藏一个类的实现细节
B.防止对封装数据的未经授权的访问。使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
C.有利于保证数据的完整性
D.便于修改,增强代码的可维护性