当前位置: 首页 > article >正文

C#面向对象(封装)

1.什么是封装?

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

2.封装在C#面向对象的作用

1.提高安全性
2.提高可维护性
3.提高代码复用性
4.提高程序的模块化

3.不同的封装在C#示例

1.私有属性: Private
私有属性只能在类的内部访问,无法在类的外部直接访问
  public class People
  {
      private string name;
      public string Name
      {
          get { return name; }
          set { name = value; }
      }
      //name 的属性被定义为私有属性,外部无法直接访问,只能通过公共属性Name 来获取和设置
  }
2.公共属性: public

公共方法可以在类的内部和外部都能访问

 public class Suanfa
 {
     public int Add(int x,int y)
     {
         return x + y;
     }
     //Add 方法为公共的,可以在外部访问使用
 }
3.受保护的方法: Protected

受保护的方法只能在类的内部和继承该类的子类中访问

  public class Cat
  {
      protected void JFM()
      {
          Console.WriteLine("你好啊,欧迪");
      }
      //JFM 方法被定义为受保护的方法 ,只能在类的外部通过继承的方法调用
  }

C#封装的实现

在C#中,通过类来实现封装,访问修饰符用来控制对象的访问权限。访问修饰符有四种:public、private、protected和internal。

public class Polygon
{
    private double length;
    private double hight;
    public double Lenght
    {
        get { return length; }
        set { length = value; }
    }
    public double Hight
    {
        get { return hight; }
        set { hight = value; }
    }
    //用于计算多边形的面积
    public double Area()
    {
        return length*hight;
    }
    //用于计算多边形的周长
    public double All()
    {
        return 2*(length+hight);
    }
}
public class Progrem
{
    public static void Main(string[] args)
    {
        Polygon polygon = new Polygon();
        polygon.Hight = 5;
        polygon.Lenght = 10;
        Console.WriteLine("面积是"+polygon.Area());
        Console.WriteLine("周长是"+polygon.All());
    }
}


http://www.kler.cn/a/528628.html

相关文章:

  • 如何在Windows、Linux和macOS上安装Rust并完成Hello World
  • 深度学习篇---数据存储类型
  • 【React】PureComponent 和 Component 的区别
  • 「 机器人 」利用数据驱动模型替代仿真器:加速策略训练并降低硬件依赖
  • 一文读懂 Faiss:开启高维向量高效检索的大门
  • electron 应用开发实践
  • C语言:整型提升
  • 前端知识速记:节流与防抖
  • Vue2.x简介
  • MongoDB快速上手(包会用)
  • 浅析DDOS攻击及防御策略
  • Linux系统部署Python项目持续运行配置
  • 数据结构【单链表操作大全详解】【c语言版】(只有输入输出为了方便用的c++)
  • LightM-UNet(2024 CVPR)
  • 面试之SolrElasticsearch
  • DRM系列五:注册DRM设备--drm_dev_register
  • C++11新特性之lambda表达式
  • 类和对象(中)---默认函数
  • Linux命令入门
  • Python 模块导入问题终极解决指南
  • 土地覆盖产品批量下载(GLC_FCS30 、Esri_GLC10、 ESA_GLC10 、FROM_GLC10)
  • 深度学习 DAY3:NLP发展史
  • 网络工程师 (11)软件生命周期与开发模型
  • vscode命令面板输入 CMake:build不执行提示输入
  • Mono里运行C#脚本39—mono_jit_runtime_invoke函数
  • mac 手工安装OpenSSL 3.4.0