多项选择题

A.封装给对象提供了隐藏内部特性和行为的能力
B.通过隐藏对象的属性来保护对象内部的状态
C.提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展
D.对象提供一些能被其他对象访问的方法来改变它内部的数据,这种操作让Java代码的安全性降低