各位前辈你们好!
我学了一段时间的java了,但是对于其中的封装性还是理解的不是很好,麻烦各位指点一下!
我知道“类”是封装的基本单位,它把属性和方法封装在一起,通过方法可以对类中的属性进行操作!
我有一个疑问,比如我把属性用Private进行修饰,则类的属性只能在本类中进行操作,这个操作仅仅指的是对属性进行赋值吗?外部也可以通过公用的方法对属性进行赋值,那么private不是没有起到作用?我对这一块有点模糊,还希望大家多多发言,谢谢!

解决方案 »

  1.   

    private私有的,类本身可以访问,不对外公开;隐藏 了类中的成员变量,
    可以弄一个构造方法,然后加参数,然后参数赋值,的方式使用,似乎可以,
      

  2.   

    至于你的第一疑问,操作属性并不仅仅是赋值哦,也可以修改属性内容,如果属性是对象,是数组,是集合呢关于private的用法,很明显就是你理解还没到位,private可以修饰变量、构造器,方法、内部类;在变量前面加private 表示类的私有属性,只可以在类内部访问使用;你可以这样写测试代码去理解它,在内部类、同一包下的其他类、不同包下的类中对它进行访问,看看结果。我主要是来赚积分的哦,现在csdn的积分为0,有几个很重要的东东没有办法下载,积分全给我吧 我会感谢你
      

  3.   

    封装这个解释,我一直喜欢用CPU作为例子
    CPU把所有的电阻电容门电路等都封装起来,只留出一些管脚(接口)让用户使用,CPU能暴露什么,不能暴露什么,是生产商设计决定的,用户不能直接操作CPU的电阻电容等等,但可以通过給管脚适当的电压来控制电阻电容等,也就是说用户不能直接访问CPU的属性,但是可以通过方法修改CPU的属性的值
    同样的一个类也是把属性算法(逻辑处理)封装起来,只留必要的方法(接口)让用户使用,一个类该暴露什么,不该暴露什么,由类的设计者根据需求设计决定的。private属性用户不能直接访问,如果设计者提供相应的接口方法,那么用户可以通过该接口方法访问。
    LZ的疑惑在于通过方法能修改属性和直接修改属性的区别,直接修改相当于不经过门电路直接给CPU的电阻电容等元件输个电压,这样这个电压(电流)是否超载不能有效保证,元件就有可能被烧坏,所以提供相应的方法访问属性,可以在方法中做相应的控制。同样的,一个类,不直接修改属性而通过方法来修改,可以在方法里做相应的处理避免用户输入的一些非法数据而造成系统故障。只不过对于POJO类来说,因为类本身只是作为数据的载体,并不带有逻辑处理,所以一般的set方法就是简单的给属性赋值。
      

  4.   

    封装步骤(参考):
    1.属性用private私有
    2.使用set/get赋值,并用this引用
    3.调用方法就可以了(方法公有)、
    参考下:http://www.javaweb.cc/language/java/182385.shtml
      

  5.   

    1 . 私有属性一般就是在类内进行值的传递操作,如用作中间变量等
    2 . 而对私有属性提供公共方法(如set方法)进行访问,其旨在可以在公共方法内对属性进行限制(如参数值的类型,长度,大小 等)或是别的操作,如果直接提供公共方法返回本属性而不做其他操作,和提供公共方法没有区别
      

  6.   

    阿宝的理解很犀利。
    private public等修饰符有不同的限定和作用,如果LZ不能理解,建议重新看看“定义域”的知识,参照API文档多写几个测试实例,相信很快就能融会贯通。