C# 访问修饰符

例如我们要用A类,则需要把包含A类的程序集(即*.DLL)引用到该工程中(物理);而在程序中要声明A类的命名空间(逻辑)。

Protected Internal 访问修饰符

Protected Internal
访问修饰符允许在本类,派生类或者包含该类的程序集中访问。这也被用于实现继承。

  

 

封装 被定义为”把一个或多个项目封闭在一个物理的或者逻辑的包中”。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。

  • Public:所有对象都可以访问;
  • Private:对象本身在对象内部可以访问;
  • Protected:只有该类对象及其子类对象可以访问
  • Internal:同一个程序集的对象可以访问;
  • Protected internal:一个程序集内的对象,或者该类对象及其子类可以访问

Public(公共的) 访问修饰符

Public
访问修饰符允许一个类将其成员变量和成员函数暴露给其他的函数和对象。任何公有成员可以被外部的类访问

下面是个小例子

using System;

namespace ConsoleApp1
{
    class Rectangle
    {
        public double length { get; set; }
        public double width { get; set; }

        public double Getarea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine($"长度:{length}");
            Console.WriteLine($"宽度:{width}");
            Console.WriteLine($"面积:{Getarea()}");
        }
    }




    class Program
    {
        static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.width = 55.5;
            rectangle.length = 12.32;
            rectangle.Getarea();
            rectangle.Display();
            Console.ReadKey(true);
        }
    }
}

 

当上面的代码被编译和执行时,它会产生下列结果:

长度:12.32
宽度: 55.5 
面积: 683.76

在上面的实例中,成员变量 length 和 width
被声明为 public,所以它们可以被函数 Main() 使用 Rectangle
类的实例  rectangle 访问。

成员函数 Display() 和 GetArea() 可以直接访问这些变量。

成员函数 Display() 也被声明为 public,所以它也能被 Main() 使用
Rectangle 类的实例 rectangle 访问。

封装 被定义为”把一个或多个项目封闭在一个物理的或者逻辑的包中”。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。

C#
封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。

一个 访问修饰符 定义了一个类成员的范围和可见性。C#
支持的访问修饰符如下所示:

 

Protected 访问修饰符

Protected
访问修饰符允许子类访问它的基类的成员变量和成员函数。这样有助于实现继承。

Protected Internal 访问修饰符

Protected Internal
访问修饰符允许在本类,派生类或者包含该类的程序集中访问。这也被用于实现继承。 
 

抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象

抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象

Public 访问修饰符

Public
访问修饰符允许一个类将其成员变量和成员函数暴露给其他的函数和对象。任何公有成员可以被外部的类访问。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program1
    {
        public int a;
        public int b;

        public int AddData()
        {
            return a + b;
        }
        public void Display()
        {
            Console.WriteLine("a: {0}", a);
            Console.WriteLine("b: {0}", b);
            Console.WriteLine("和: {0}", AddData());
        }
    }

    class Program2
    {
        static void Main(string[] args)
        {
            Program1 a = new Program1();
            a.a = 3;
            a.b = 5;
            a.Display();
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

a: 3
b: 5
和: 8

上面程序中,class program1 中变量和函数被声明为 public,
因此可以被下面的program2中Main()函数 使用program1类的实例
访问到。

程式集:IL+元数据

C#
封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。

  • public:所有对象都可以访问;(公共的)
  • private:对象本身在对象内部可以访问;(私有的)
  • protected:只有该类对象及其子类对象可以访问;(受保护的)
  • internal:同一个程序集的对象可以访问;(内部的)
  • protected
    internal:访问限于当前程序集或派生自包含类的类型。(内部受保护的)

如果没有指定访问修饰符,则使用类成员的默认访问修饰符,即为 private

发表评论

电子邮件地址不会被公开。 必填项已用*标注