A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘晓康 中级黑马   /  2012-4-11 18:36  /  1439 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class TestBean
{
    private String name = "abc";
}
public class PrivateTest
{
        public static void main( String[] args ) throws IllegalArgumentException, IllegalAccessException
    {
        TestBean tb = new TestBean();
        Field[] f = TestBean.class.getDeclaredFields();
        for(int i=0;i<f.length;i++){
            f[i].setAccessible( true );
            System.out.println(f[i].get( tb ));
        }
    }
}
私有变量的值是可以访问到的  输出为abc
那设置成私有是不是没用啊~~~那封装还有什么用?

3 个回复

倒序浏览
java最初的设计是没有包含反射这个特性的,这也是后来为了能在java运行期间得到类字节码的元数据,其实当你用反射的时候就已经破坏了java的封装了,跳出正常的语言规范

回复 使用道具 举报
封装,简单理解就是把一系列的数据放在一个类中,如果形容一个人(假设吧‘人’作为一个类),我们可以用身高(hight),体重(weight)等来描述,如果不封装,我们需要3个变量来形容它。在面向对象中,可以用一个Person类封装这些数据,Person具有3个成员变量,分别是 height,weight。使用的时候,每当生成一个这样的类的对象,就具有这3个属性。

封装:是指隐藏对象的属性和实现细节,仅对外提供 公共访问方式。

好处:
将变化隔离。
便于使用。
提高重用性。
提高安全性。

封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。

private关键字:
是一个权限修饰符。
用于修饰成员(成员变量和成员函数)
被私有化的成员只在本类中有效。

常用之一:
将成员变量私有化,对外提供对应的set ,get 方法对其进行访问。提高对数据访问的安全性。

回复 使用道具 举报
私有是一种定义,直观的告诉其他看此段代码的程序员,
告诉他们这个属性是跟其他类的属性和方法无关的。

这个属性只会在类的内部进行动作。

这样在查错和DEBUG调试的时候就不需要去关心类外部对这个属性的操作所带来的影响了。

一般都会把类的成员变量封装为私有,并且提供get,set函数来对这个变量进行操作。

一方面是容易调试,一方面是降低耦合度,
使代码更加强壮。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马