深入分析c# 封装和访问修饰符

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

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

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

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

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

Public 访问修饰符

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

下面的实例说明了这点:

using System;

namespace RectangleApplication
{
  class Rectangle
  {
    //成员变量
    public double length;
    public double width;

    public double GetArea()
    {
      return length * width;
    }
    public void Display()
    {
      Console.WriteLine("长度: {0}", length);
      Console.WriteLine("宽度: {0}", width);
      Console.WriteLine("面积: {0}", GetArea());
    }
  }// Rectangle 结束

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

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

长度: 4.5
宽度: 3.5
面积: 15.75

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

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

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

Private 访问修饰符

Private 访问修饰符允许一个类将其成员变量和成员函数对其他的函数和对象进行隐藏。只有同一个类中的函数可以访问它的私有成员。即使是类的实例也不能访问它的私有成员。

下面的实例说明了这点:

using System;

namespace RectangleApplication
{
  class Rectangle
  {
    //成员变量
    private double length;
    private double width;

    public void Acceptdetails()
    {
      Console.WriteLine("请输入长度:");
      length = Convert.ToDouble(Console.ReadLine());
      Console.WriteLine("请输入宽度:");
      width = Convert.ToDouble(Console.ReadLine());
    }
    public double GetArea()
    {
      return length * width;
    }
    public void Display()
    {
      Console.WriteLine("长度: {0}", length);
      Console.WriteLine("宽度: {0}", width);
      Console.WriteLine("面积: {0}", GetArea());
    }
  }//end class Rectangle
  class ExecuteRectangle
  {
    static void Main(string[] args)
    {
      Rectangle r = new Rectangle();
      r.Acceptdetails();
      r.Display();
      Console.ReadLine();
    }
  }
}

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

请输入长度:
4.4
请输入宽度:
3.3
长度: 4.4
宽度: 3.3
面积: 14.52

在上面的实例中,成员变量 length 和 width 被声明为 private,所以它们不能被函数 Main() 访问。

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

由于成员函数 AcceptDetails() 和 Display() 被声明为 public,所以它们可以被 Main() 使用 Rectangle 类的实例 r 访问。

Protected 访问修饰符

Protected 访问修饰符允许子类访问它的基类的成员变量和成员函数。这样有助于实现继承。我们将在继承的章节详细讨论这个。更详细地讨论这个。

Internal 访问修饰符

Internal 访问说明符允许一个类将其成员变量和成员函数暴露给当前程序中的其他函数和对象。换句话说,带有 internal 访问修饰符的任何成员可以被定义在该成员所定义的应用程序内的任何类或方法访问。

下面的实例说明了这点:

using System;

namespace RectangleApplication
{
  class Rectangle
  {
    //成员变量
    internal double length;
    internal double width;

    double GetArea()
    {
      return length * width;
    }
    public void Display()
    {
      Console.WriteLine("长度: {0}", length);
      Console.WriteLine("宽度: {0}", width);
      Console.WriteLine("面积: {0}", GetArea());
    }
  }//end class Rectangle
  class ExecuteRectangle
  {
    static void Main(string[] args)
    {
      Rectangle r = new Rectangle();
      r.length = 4.5;
      r.width = 3.5;
      r.Display();
      Console.ReadLine();
    }
  }
}

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

长度: 4.5
宽度: 3.5
面积: 15.75

在上面的实例中,请注意成员函数 GetArea() 声明的时候不带有任何访问修饰符。如果没有指定访问修饰符,则使用类成员的默认访问修饰符,即为 private。

Protected Internal 访问修饰符

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

以上就是深入分析c# 封装和访问修饰符的详细内容,更多关于c# 封装和访问修饰符的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#中一个高性能异步socket封装库的实现思路分享

    前言 socket是软件之间通讯最常用的一种方式.c#实现socket通讯有很多中方法,其中效率最高就是异步通讯. 异步通讯实际是利用windows完成端口(IOCP)来处理的,关于完成端口实现原理,大家可以参考网上文章. 我这里想强调的是采用完成端口机制的异步通讯是windows下效率最高的通讯方式,没有之一! 异步通讯比同步通讯处理要难很多,代码编写中会遇到许多"坑".如果没有经验,很难完成. 我搜集了大量资料,完成了对异步socket的封装.此库已用稳定高效的运行几个月. 纵观网

  • 图文介绍c#封装方法

    c# 使用封装方法 1.计算1-100之间的所有质数(素数)的和. 代码: 2.程序执行结果: 3.用方法实现:有一个数组,找出其中最大值.不能调用数组的Max方法 代码: 4.程序执行结果: 5.用方法实现:有一个字符串数组,请输出最长的字符串. 代码: 6.程序执行结果 总结:以上就是关于c#封装方法的图文介绍,感谢大家的阅读和对我们的支持.

  • 访问修饰符(C# 编程指南)

    public 同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员. private 只有同一类或结构中的代码可以访问该类型或成员. protected 只有同一类或结构或者派生类中的代码可以访问该类型或成员. internal 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以. protected internal 同一程序集中的任何代码或其他程序集中的任何派生类都可以访问该类型或成员. http://msdn.microsoft.com/zh-c

  • C#类的访问修饰符用法分析

    本文详细分析了C#类的访问修饰符用法,分享给大家供大家参考.具体用法分析如下: 默认情况下,类声明为内部的,即只有当前工程中的代码才能访问它.可以用internal访问修饰符关键字显式指定,但这不是必须的,类在定义时默认为此类型的类.但是C# 方法默认访问级别: private. 方法或者属性的修饰符的访问级别如下图: 访问修饰符 意 义 public 访问不受限制,可以类内和任何类外的代码中访问 protected 可访问域限定于类内或从该类派生的类内 internal 可访问域限定于类所在的

  • 浅谈C#基础之类的访问修饰符

    1.类中成员的访问修饰符 方位修饰符就是确定该成员能够访问(使用)的区域.C#中常用的有如下修饰符:pubic(公有).private(私有).internal(内联).protected(受保护).举例说明各个修饰符的限制区域.    复制代码 代码如下: class TestClass    {        public int a = 0;        private int b = 0;        protected int c = 0; pulic  static  int d

  • 利用unity代码C#封装为dll的步骤分享

    前言 本文主要介绍了关于unity代码C#封装为dll的相关内容,分享出来供需要的朋友们学习,下面话不多说了,来一起学习学习吧. 方法如下 1 Visual studio软件打开后创建一个项目 2并选择类库类型 3编写简单的代码看看效果(发现会报错),主要是没有添加类库,以及using UnityEngine;引用空间 4添加类库,引用空间 发现依然会报错,这就需要添加应用库unityengine.dll,方法如下 找到安装unity目录下的UnityEngine.dll,添加后你就会发现,报红

  • 深入分析c# 封装和访问修饰符

    封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中".在面向对象程序设计方法论中,封装是为了防止对实现细节的访问. 抽象和封装是面向对象程序设计的相关特性.抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象. C# 封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现. 一个 访问修饰符 定义了一个类成员的范围和可见性.C# 支持的访问修饰符如下所示: public:所有对象都可以访问: private:对象本身在对象内部可以访问: protected

  • Java 的访问修饰符public,protected,private(封装、继承)

    目录 一.访问控制修饰符 二.封装(Encapsulation) 三.继承(Inheritance) (1) 引出继承 (2) 继承介绍 (3) 继承细节 一.访问控制修饰符 Access level modifiers determine whether other classes can use a particular field or invoke a particular method. 访问级别修饰符决定其他类是否可以使用特定成员变量或调用特定成员方法方法. Java 中有 4 个级

  • 深度理解Java访问修饰符

    一.作用及种类 UML类图 建模语言或标准建模语言 类的属性.操作中的可见性使用+.#.-分别表示public.protected.private 作用:信息隐藏 防止用户意外修改数据,使模块易于维护和使用有哪些修饰符呢? private:只有该类可以访问 protected:该类及其子类的成员可以访问,同一个包中的类也可以访问 public:该类或非该类可以访问 默认:同一个包中的类可以访问 可以作用于类,成员,方法 二.深度理解 同一个类 就是同一个类里面的,类相当于结构体 同一个包 圈中的

  • Java正确使用访问修饰符的姿势

    目录 1.简介 2.访问修饰符 3.原则 总结 1.简介 访问修饰符是Java语法中很基础的一部分,但是能正确的使用Java访问修饰符的程序员只在少数.在Java组件开发中,如果能够恰到好处的使用访问修饰符,就能很好的隐藏组件内部数据和不必公布的实现细节,从而把组件API和实现细节隔离:正确的使用访问修饰符开发的Java组件,在组件与组件的调用和依赖过程中,也能很好的解耦程序,以至于整个组件能够持续开发.持续测试.持续更新. 小捌温馨总结: 通过限制访问范围达到信息隐藏或封装的效果,保证程序实现

  • 浅析php面向对象public private protected 访问修饰符

    PHP中有三种访问修饰符,分别是:     public(公共的.默认)     protected(受保护的)     private(私有的)public(公共的.默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限.protected(受保护的)被声明为protected的成员,只允许该类的子类进行访问.private(私有的 ) 被定义为private的成员,对于类内部所有成员都可见,没有访问限制.对类外部不允许访问. 图解demo 复制代码 代码如下: cl

  • 浅谈php中的访问修饰符private、protected、public的作用范围

    1. private 只能在类内部使用 2. protected 可以在类内部和继承类里使用.类外部不能使用[即实例化后的对象无法调用] 3. public 全部范围适用. 4.子类复写父类中的方法时,子类中的 访问修饰符的范围要大于等于 父类的[ 继承只能发扬光大,至少保持不变.不可以丢失东西.] 以上这篇浅谈php中的访问修饰符private.protected.public的作用范围就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • PHP面向对象——访问修饰符介绍

    PHP中有三种访问修饰符,分别是: public(公共的.默认) protected(受保护的) private(私有的) 它们可以分别用在类的属性和方法上(类的属性和方法统称为类的成员),用来修饰类成员的访问权限. public(公共的.默认) 在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限. /* 以下两个方法声明访问权限效果相同 */ function say(){}; publilc function say(){}; 当类的成员被声明为public的访问修饰

  • 浅谈Java中各种修饰符与访问修饰符的说明

    JAVA中的类只能是public 或者package的.这是符合逻辑的:人们定义类的初衷就是为了让别人用的.倘若是private,别人怎么调用?但是有一个内部类可以被定义为private.严格上说,内部类,算不得上是一种光明正大的类,内部类在某种意义上是类这个王国里的特务和地下工作者.特务和地下工作者为王国起了不少作用,但是几乎从来不敢在公众场合抛投露面.就算要露面,也要在主人(class)的同意下,向导(Interface)的引导下,才敢战战兢兢的走出来.下面是常规的一些类的修饰符和访问修饰符

随机推荐