c#基础学习之封装

C#基础学习之封装

封装是面向对象编程三大特性之一,也是面向对象的基本概念之一。封装就是将数据和行为(方法)包装在类里面,隐藏内部实现的细节,使得外界代码无法直接访问和修改对象内部的数据,只能通过对象的公共方法来访问和修改对象的状态。封装可以提高代码的安全性和可维护性,提高代码的复用性和可扩展性。

封装的三要素

  • 访问修饰符:public、private、protected、internal、protected internal
  • 属性(get、set):控制对象的状态和访问权限
  • 方法(public、private、protected、virtual、abstract):完成某些特定功能,控制对象的行为

封装的特点

  • 隐藏了对象的内部实现,只对外公开了指定的方法和属性,保护了对象的安全性和可靠性
  • 封装是基于一个类进行的,从而实现了代码的复用。同一个类的不同对象对其属性方法的使用都是一样的,具有一般性
  • 封装增强了灵活性,使得代码易于受控,便于模块化

封装示例1

class Person {
    private string name;
    private int age;

    // 属性 (get/set)
    public string Name {
        get { return name; }
        set { name = value; }
    }
    public int Age {
        get { return age; }
        set { age = value; }
    }

    // 公共方法
    public void SayHi() {
        Console.WriteLine("Hi! My name is " + name + ", I'm " + age + " years old.");
    }  
}

在上面的示例代码中,我们定义了一个Person类,包括属性Name和Age,以及方法SayHi,这里Name和Age都是私有字段,通过公共属性来控制它们的访问权限。在SayHi方法中,我们可以通过this关键字来访问当前对象的属性,实现了对对象状态的访问。

封装示例2

class BankAccount {
    private string accountNo;
    private decimal balance;

    // 属性 (get/set)
    public string AccountNo {
        get { return accountNo; }
    }
    protected decimal Balance {
        get { return balance; }
        set { balance = value; }
    }

    // 方法
    public void Deposit(decimal amount) {
        Balance += amount;
    }
    public bool Withdraw(decimal amount) {
        if (Balance >= amount) {
            Balance -= amount;
            return true;
        }
        return false;
    } 
}

class SavingsAccount : BankAccount {
    public decimal CalculateInterest() {
        decimal interest = 0.01m * Balance;
        Deposit(interest);
        return interest;
    }
}

在上面的示例代码中,我们定义了一个BankAccount类,包括属性AccountNo和Balance,以及方法Deposit和Withdraw,这里AccountNo和Balance都是私有字段,通过公共属性来控制它们的访问权限。在Deposit和Withdraw方法中,我们可以通过Balance属性来访问对象状态,并通过set方法来修改对象状态。

另外,在SavingsAccount类中,我们继承了BankAccount类,并新增了一个CalculateInterest方法,通过Balance属性来计算利息,并通过Deposit方法将利息存入该账户。在这个过程中,Balance属性被BankAccount和SavingsAccount类各自控制,外界无法直接访问或修改其值,从而实现了对对象状态的封装。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#基础学习之封装 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • .NET 6开发TodoList应用引入第三方日志库

    为了在.NET 6开发TodoList应用中引入第三方日志库,可以参考以下步骤: 步骤一:在TodoList项目中安装第三方日志库 可以使用NuGet包管理器或Package Manager Console安装第三方日志库。常见的日志库有Serilog、NLog、log4net等。以Serilog为例,可以在Package Manager Console中使…

    C# 2023年6月3日
    00
  • sql字符串函数大全和使用方法示例

    SQL字符串函数是SQL语言中的一类函数,用于处理字符串类型的数据。这些函数可以用于字符串的拼接、截取、替换、转换等操作。本文将介绍SQL字符串函数的大全和使用方法示例。 SQL字符串函数大全 以下是SQL字符串函数的大全: CONCAT:用于将两个或多个字符串连接在一起。 SUBSTRING:用于从字符串中提取子字符串。 REPLACE:用于将字符串中的一…

    C# 2023年5月15日
    00
  • C#将数字转换成字节数组的方法

    要将一个数字转换成字节数组,我们可以使用C#中的BitConverter.GetBytes方法。该方法接受一个long,int,short,ulong,uint,ushort,double,float或decimal型式的数字,并将其转换为字节数组。 具体步骤如下: 使用BitConverter.GetBytes方法将数字转换为字节数组。例如: int nu…

    C# 2023年6月7日
    00
  • C# 将数据库SqlServer数据绑定到类中的过程详解

    标题 C# 将数据库 SqlServer 数据绑定到类中的过程详解 简介 本篇攻略主要介绍 C# 中如何将数据库 SqlServer 数据绑定到类中,从而方便数据操作和管理。 过程分析 3.1 使用 DataSet 进行绑定 在 C# 中,使用 DataSet 对象可以将数据库中的数据绑定到类中。具体操作步骤如下: (1)建立 C# 项目,并在项目中添加 S…

    C# 2023年6月2日
    00
  • C#调用RabbitMQ实现消息队列的示例代码

    下面我会给出详细讲解“C#调用RabbitMQ实现消息队列”的完整攻略,其中包含两条示例代码。具体请见下文: 什么是RabbitMQ? RabbitMQ是一个开源的消息中间件,它采用的AMQP协议为应用程序提供可靠的异步消息传输。 RabbitMQ的优势 使用RabbitMQ可以将消息发送给一个或多个接收者,并使用消息队列保存等待处理的消息。这种方式有下面的…

    C# 2023年5月15日
    00
  • C# 面向对象三大特性:封装、继承、多态

    C# 面向对象三大特性是封装、继承和多态。这三个特性是面向对象编程最基本、最重要的概念。在本篇攻略中,我们将详细讲解它们的含义,以及如何在C#中使用它们。 封装 封装是指将对象的属性和方法封装在一起,形成一个类。类可以通过统一的接口来控制属性和方法的访问。在C#中,可以通过属性和方法的访问修饰符来实现封装。 属性封装示例: class Person { pr…

    C# 2023年6月1日
    00
  • C# 获取PDF中的数字签名证书

    下面是详细的“C# 获取PDF中的数字签名证书”的攻略: 什么是数字签名证书 数字签名证书,是指用数字方式来证实文档或数据的真实性、完整性、不可否认性的一种电子证书。 获取PDF中的数字签名证书 我们可以通过以下步骤来获取PDF中的数字签名证书: 步骤一:安装iTextSharp iTextSharp是C#的一个PDF处理库,我们需要先在项目中安装iText…

    C# 2023年6月7日
    00
  • ASP.NET Core模仿中间件方式实现列表过滤功能

    ASP.NET Core模仿中间件方式实现列表过滤功能攻略 在ASP.NET Core中,可以使用中间件来实现列表过滤功能。本攻略将提供详细的步骤和示例说明,演示如何在ASP.NET Core中实现列表过滤功能。 步骤 步骤1:创建一个新的ASP.NET Core Web应用程序 首先,需要创建一个新的ASP.NET Core Web应用程序。可以使用以下命…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部