与oops概念相关

时间:2014-04-24 10:23:46

标签: c# c#-4.0

我有一个非常基本的问题,甚至可以惹恼你,但当我开始阅读Visual c#电子书时,我会想到这一点。

他们已经提到:: 令人惊讶的是,Circle类目前没有实际用途。默认情况下,当您将方法和数据封装在类中时,该类会形成外部世界的边界。类中定义的字段(例如半径)和方法(例如Area)可以通过类中的其他方法看到,但不能被外部世界看到 - 它们是类的私有。因此,虽然您可以在程序中创建Circle对象,但是您无法访问其radius字段或调用其Area方法,这就是为什么该类没有多大用处!但是,您可以使用public

修改字段或方法的定义

这是给出的Circle类

class Circle
{
    int radius;

    double Area()
    {
        return Math.PI * radius * radius;
    }
}

因此,私有字段无法访问,但是当我在Console项目中尝试这样的东西时,我正在成功运行它。是否我们在课堂上有主要功能,这就是为什么我可以通过Program类的对象来获取私有字段的原因?

class Program 
    {

      int number;
       static void Main(string[] args)
        {
            Program ObjProgram = new Program();
            ObjProgram.number = 10;
            Console.ReadLine();

        }
   }

2 个答案:

答案 0 :(得分:8)

您可以在同一个类中访问私有字段 - 该类的任何实例可以访问任何其他实例的私有字段。

因此,您可以创建Program并从Program.Main内访问其私人字段。

如果你是从另一个类的方法中尝试过的,那就不行了。

class Program 
{
   int number;

   static void Main(string[] args)
   {
        Program ObjProgram = new Program();
        ObjProgram.number = 10;                // works fine
        Console.ReadLine();
   }
}

class SomeOtherClass
{
   void SomeMethod()
   {
        Program program = new Program();
        program.number = 10;                  // does not compile!
   }
}

答案 1 :(得分:1)

主要方法是Program class

的成员

因此它(主)可以访问程序类的私人成员......

例如

class a
{
    int x;
    void somemethod1()
    {
        x=10;  //this will work fine 
    }
}
class b
{
    int y;
    void somemethod2()
    {
       a a1=new a();
       a1.x=10; //this wont work because a1.x is private ... can only be accessible my members of class a
    }

}