【问题标题】:Related to the oops concepts与 oops 概念相关
【发布时间】:2014-04-24 18:38:48
【问题描述】:

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

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

这是给定的 Circle 类

class Circle
{
    int radius;

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

因此,无法访问私有字段,但是当我在控制台项目中尝试这样的操作时,我成功运行了它。是不是我们在类中有 main 函数,这就是为什么我可以让 Program 类的对象访问我的私有字段?

class Program 
    {

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

        }
   }

【问题讨论】:

    标签: c# c#-4.0


    【解决方案1】:

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

    因此您可以创建一个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!
       }
    }
    

    【讨论】:

    • 我添加了一个示例 - 这就是您要查找的内容吗?
    • 因为number也在Program类中。
    【解决方案2】:

    Main 方法是 Program 类的成员

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

    例如

    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
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 2020-02-05
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      相关资源
      最近更新 更多