黑马程序员技术交流社区

标题: 封装 [打印本页]

作者: fanrong    时间: 2015-6-18 23:55
标题: 封装
封装:是指隐藏对象的属性和实现细节
private是封装的最小权限私有
            被private修饰的成员,可使其只在本类中有效
       但原则是:必须要提供一个公共方法,对其访问、
所以要有set,get方法,
         set是设置属性,get是获取属性因此get方法要有返回值。
好处:将变化隔开,便于使用,提高重用性和复用性
作者: lizhi1817    时间: 2015-6-19 01:27
学习了
作者: JRT    时间: 2015-6-19 19:42
public protected 也是封装吧
作者: hi陈    时间: 2015-6-19 21:06
恩恩..............
作者: 林大涛    时间: 2015-6-19 21:28
路过.....
作者: cyd1058    时间: 2015-6-19 22:30
学习了。加油!
作者: ww黑马    时间: 2015-6-19 22:31
加油 ..
作者: xiongfangyuan    时间: 2015-6-19 23:12
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

    好处:
    1. 将变化隔离。
    2. 便于使用。
    3. 提高重用性。
    4. 提高安全性。

    封装原则:
    1. 将不需要对外提供的内容都隐藏起来。
    2. 把属性都隐藏,提供公共方法对其访问。如,getXXX,setXXX。
示例:
/*
人:
属性:年龄
行为:说话
*/
class Person{
       //private:私有,是一个权限修饰符,用于修饰
       //不希望别人直接访问赋值,需要通过私有化把属性进行隐藏
       private int age ;

       //通过提供set、get公共方法对其访问
       public void setAge( int a){
             //在set方法内可以对属性的赋值进行限制
             if (a > 0 && a < 130){
                   age = a;
            } else
                  System.out .println("错误的数据" );
      }

       public int getAge(){
             return age ;
      }

       void speak(){
            System.out .println("age = " + age);
      }
}

class PersonDemo{
       public static void main(String[] args){
            Person p = new Person();
            //通过其他方式访问
            p.setAge(20);
            p.speak();
            //赋值不合法,set方法就不允许成功赋值
            p.setAge(-20);
      }
}
复制代码
   运行结果:



    P.S.
    1、私有仅仅是封装的一种体现而已。
    2、private关键字:是一个权限修饰符,用于修饰成员(成员变量和成员函数),被私有化的成员只在本类中有效。
    3、常用场景之一:将成员变量私有化,对外提供对应的set、get方法对其进行访问,提高对数据访问的安全性。


作者: liu100chao    时间: 2015-6-19 23:32
封装 打包不让别人看!!!
作者: Happe_Sun    时间: 2015-6-20 00:55
谢谢分享~
作者: zhenxing133    时间: 2015-6-20 02:01
再次复习了
作者: keto    时间: 2015-6-20 09:43
xuexile.......
作者: zc强盗    时间: 2015-6-20 11:59
是提高代码的安全性吧
作者: 十五号的人生    时间: 2015-6-20 13:47
不至是通过set,get方法,还可以通过构造函数为成员变量赋值
作者: 十字天堂    时间: 2015-6-20 15:04
来学习一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2