黑马程序员技术交流社区

标题: 通过什么方法可以外面访问到private类型变量的值? [打印本页]

作者: 小王    时间: 2014-2-8 14:18
标题: 通过什么方法可以外面访问到private类型变量的值?
本帖最后由 小王 于 2014-2-8 17:46 编辑

通过什么方法可以外面访问到private类型变量的值?最好有代码
作者: wushanwow    时间: 2014-2-8 15:16
  1. class Test
  2.     {
  3.         //private关键字的意思就是说这个下面的变量是"不能够"被别的类访问的
  4.         //那么为了保护这个变量,如果需要被外部读取,或者只是改变的话,这样使用属性来进行保护下改变.
  5.         //首先我们定义这样一个private变量
  6.         private int i = 1234;
  7.         //然后这个变量只能被读取,不会被赋值.使用属性来进行传值.这样这个变量就不会直接暴露在用户面前.并且不会被改变.
  8.         public int age
  9.         {
  10.             //使用get让外面读取这个属性,以为这个属性是在这个类的内部,所有可以访问这个私有变量.
  11.             //当访问这个属性的时候,就返回i的值
  12.             get
  13.             {
  14.                 return i;
  15.             }
  16.             //使用set可以改变这个变量的值.
  17.             set
  18.             {
  19.                 i = value;
  20.                 Console.WriteLine("使用属性改变了i的值:"+i.ToString());
  21.             }
  22.             
  23.         }
  24.     }
  25.     class Program
  26.     {
  27.         static void Main(string[] args)
  28.         {
  29.             //首先将这个类实例化一个对象
  30.             Test test = new Test();
  31.             //然后将这个属性打印出来,这个时候看清楚了,我们读取的是这个属性,不是这个变量,私有变量在类外面是不应该被访问也是不可能被访问的.
  32.             Console.WriteLine("取得的值是:"+test.age.ToString());
  33.             //如下写法就是错误的,编译就会报错
  34.             //Console.WriteLine(test.i);
  35.             Console.ReadKey();
  36.         }
  37.     }
复制代码

作者: wxfyzt    时间: 2014-2-8 16:34
可以通过私有字段的属性来实现访问,属性不仅提供了对私有字段的访问,而且可以进行非法设置值的判断,避免给私有字段设置不合法的值,属性本身不存储数据,数据都存储在其对应的私有字段中。希望对你有帮助
作者: 郭运川    时间: 2014-2-8 16:55
通过类中的公共方法调用私有变量
class A
{
        private int i;
        public void set(int i)
        {
                this.i = i;
        }
        public int get()
        {
                return i;
        }
}
class B
{
        public static void main(String[] ars)
        {
               
                A num = new A();
                //修改class A中的i
                num.set(5);
                //获得class A中的i
                int temp = num.get();
        }
}
作者: 小王    时间: 2014-2-8 17:46
恩,好吧,通过属性可以做到的




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