一文解读关于C#封装的详情

2022-01-10 10:58

  封装是一种被定义为在物理或逻辑包中包含一个或多个项目的过程。封装在面向对象的编程方法中,是用来阻止访问具体的实现细节。

  抽象和封装是面向对象编程中的相关特征。抽象允许相关信息可见,封装使程序员能够实现所需的抽象级别。

一文解读关于C#封装的详情

  封装通过使用访问说明符来实现。访问说明符定义了一个类成员的范围和可见性 C# 支持以下访问说明符:

  公共访问说明符

  私有访问说明符

  受保护访问说明符

  内部访问说明符

  保护内部访问说明符

  公共访问说明符

  公共访问说明符允许类将成员变量和成员函数公开到其他函数和对象。任何公共会员都可以从类的外部来访问。

  以下示例说明了这一点: 

using System;
namespace RectangleApplication
{
    class Rectangle
    {
        //member variables
        public double length;
        public double width;

        public double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }//end class Rectangle

    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.length = 14.5;
            r.width = 10.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

  当编译和执行上述代码时,会产生以下结果:

Length: 14.5
Width: 10.5
Area: 152.25

  在前面的例子中,成员变量:length和width被声明为public,因此可以使用名为r的Rectangle类的实例从Main()函数访问它们。

  成员函数Display()和GetArea()也可以直接访问这些变量,而不用通过该类的任何实例。

  成员函数Display()也被声明为public,因此也可以使用名为r的Rectangle类的实例从Main()访问它。

  私有访问说明符

  私有访问说明符允许类从其他函数和对象中隐藏其成员变量和成员函数。只有同一个类的函数才能访问其私有成员。即使是类的实例也无法访问其私有成员。

  以下示例说明了这一点:

using System;
namespace RectangleApplication 
{
   class Rectangle
   {
      //member variables
      private double length;
      private double width;

      public void Acceptdetails()
      {
         Console.WriteLine("Enter Length: ");
         length = Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("Enter Width: ");
         width = Convert.ToDouble(Console.ReadLine());
      }
      public double GetArea()
      {
         return length * width;
      }
      public void Display()
      {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle

   class ExecuteRectangle
   {
      static void Main(string[] args)
      {
         Rectangle r = new Rectangle();
         r.Acceptdetails();
         r.Display();
         Console.ReadLine();
      }
   }
}

  当编译和执行上述代码时,会产生以下结果:

Enter Length:
12.5
Enter Width:
8.25
Length: 12.5
Width: 8.25
Area: 103.125

  在前面的例子中,成员变量:length和width被声明为私有的,所以不能从函数Main()访问它们。成员函数AcceptDetails()和Display()可以访问这些变量。由于成员函数AcceptDetails()和Display()被声明为public,因此可以使用名为r的Rectangle类的实例从Main()访问它们。

  受保护访问指定符

  受保护的访问说明符允许子类访问其基类的成员变量和成员函数。这样就有助于实现继承。我们将在后续章节中详细讨论。

  内部访问指定符

  内部访问说明符允许类将其成员变量和成员函数公开到当前程序集中的其他函数和对象。换句话说,具有内部访问说明符的任何成员都可以从定义成员的应用程序中定义的任何类或方法访问。

  以下程序说明了这一点:

using System;
namespace RectangleApplication
{
    class Rectangle
    {
        //member variables
        internal double length;
        internal double width;

        double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }//end class Rectangle

    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.length = 12.5;
            r.width = 8.25;
            r.Display();
            Console.ReadLine();
        }
    }
}//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/csharp/csharp_encapsulation.html

  当编译和执行上述代码时,会产生以下结果:

Length: 12.5
Width: 8.25
Area: 103.125

  在上面的示例中,请注意,成员函数GetArea()没有使用任何访问说明符声明。如果没有使用任何一个访问说明符的类成员,它的默认访问说明符是什么呢? 默认使用的是私有的。

  受保护内部访问指定符

  受保护的内部访问说明符允许类从其他类对象和函数中隐藏其成员变量和成员函数,但同一应用程序中的子类除外。这也是在实现继承时要使用的。

  以上就是小编为大家整理发布的“一文解读关于C#封装的详情”一文,更多相关内容尽在开课吧广场C++教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享