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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小王 于 2014-2-8 17:46 编辑

通过什么方法可以外面访问到private类型变量的值?最好有代码

评分

参与人数 2技术分 +2 收起 理由
电脑大牛 + 1
卖火柴 + 1 很给力!

查看全部评分

4 个回复

正序浏览
恩,好吧,通过属性可以做到的

评分

参与人数 1技术分 +2 收起 理由
电脑大牛 + 2

查看全部评分

回复 使用道具 举报
通过类中的公共方法调用私有变量
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();
        }
}

评分

参与人数 1技术分 +1 收起 理由
电脑大牛 + 1 很给力!

查看全部评分

回复 使用道具 举报
可以通过私有字段的属性来实现访问,属性不仅提供了对私有字段的访问,而且可以进行非法设置值的判断,避免给私有字段设置不合法的值,属性本身不存储数据,数据都存储在其对应的私有字段中。希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
电脑大牛 + 1 很给力!

查看全部评分

回复 使用道具 举报
  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.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
电脑大牛 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马