RT   
fully encapsulated的概念是什么?
一个类满足什么样的条件才能称得上是fully encapsulated?准备SCJP看题库的时候看到这个问题,可是不是十分确定,高人指点!

解决方案 »

  1.   

    Which best describes the requirements of a fully encapsulated class?
       A. Mehtods must not be private.
       B. Variables must not be public.
       C. The class must be ed final
       D. Public methods are all ed final.
       E. Modification of the objects state is only possible using method calls.
    答案E在完全封装类中,一般的定义方式是将所有的成员变量定义为“private”,而将访问这些变量的方法定义为非“private”类型,这样可以在类的外部间接地访问这些变量。所以E选项是最符合这个意思的。 
      

  2.   

    一般都是给这些私有属性,设置public的set/get方法
      

  3.   

    这个描述起来是可以这样的,但是问题是,这种描述是不是可以作为判断一个类是否完全封装的标准呢?我想知道的是,一个类必须满足哪些条件(也就是说必须有什么,必须不能有什么)才能称为一个完全封装的类。比如说,下面几个类
    class A{
        private int a;
        public int getA(){
            return a;
        }
        public void setA(int a){
            this.a = a;
        }
    }
    class B{
        private int a;
        public int getA(){
            return a;
        }
    }
    class C{
        private int a;
        private int b;
        public void set(int a, int b){
            this.a = a;
            this.b = b;
        }
    }
    类A肯定是完全封装的,但是B 和C呢?当然我只是举了B C两个例子,还有其他的很多情况,有没有一个标准?或者谁能给一个完全封装的定义?
      

  4.   

    “封装就是把对象的行为和属性装在一个类里,提供公共的访问方法和设置方法,以供外面的访问”
    同意上面的看法。看到楼主的给的例子确实不错。具体来说:一个类里面没有严格的定义规范即使是什么都不写,当让这样的类没什么实际作用,但按照面对对象的原则来看完全没错。
    我想类的完全封装是把 类中的对象、对象的行为、属性 提供完整的访问方法和设置方法,举个例子来说就是类中有几个属性 就有几个提供访问的方法和设置方法【set() get()】。类使用就好。
      

  5.   

    在完全封装类中,一般的定义方式是将所有的成员变量定义为“private”,而将访问这些变量的方法定义为非“private”类型,这样可以在类的外部间接地访问这些变量。