c#基础学习之封装

yizhihongxing

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日

相关文章

  • ASP.net(c#)用类的思想实现插入数据到ACCESS例子

    让我们来详细讲解一下如何用类的思想实现插入数据到 ACCESS 数据库。这里我们使用 ASP.NET (C#)编写代码。 1. 创建与数据库连接的类 在 ASP.NET 中,我们使用 System.Data.OleDb 命名空间来操作 ACCESS 数据库。首先,我们需要创建一个类来封装与数据连接相关的操作。 using System.Data.OleDb;…

    C# 2023年6月3日
    00
  • redis缓存数据库中数据的方法

    Redis缓存数据库中数据的方法 Redis 是一种高性能的缓存数据库,它支持多种数据结构和操作,可以用于缓存、消息队列、分布式锁等场景。本攻略将介绍 Redis 缓存数据库中数据的方法,包括数据的添加、查询、修改和删除等操作。 连接 Redis 在进行 Redis 操作之前,需要先连接 Redis 数据库。可以使用 StackExchange.Redis …

    C# 2023年5月17日
    00
  • ASP.NET Core实现文件上传和下载

    ASP.NET Core 实现文件上传和下载 在 ASP.NET Core 中,可以使用多种方式实现文件上传和下载。本攻略将详细介绍如何在 ASP.NET Core 中实现文件上传和下载,并提供多种上传方式的示例。 步骤一:编写文件上传代码 在 ASP.NET Core 中,可以使用 IFormFile 接口实现文件上传。以下是一个简单的文件上传示例: [H…

    C# 2023年5月17日
    00
  • c#中利用Tu Share获取股票交易信息

    下面是关于“c#中利用Tu Share获取股票交易信息”的完整攻略。 一、概述 Tu Share是一个免费提供A股、港股等股票交易数据的API,其提供了多种语言的接口,包括Python、Java、C#等,本攻略将介绍如何在C#中使用Tu Share获取股票交易信息。 二、注册账号 在使用Tu Share API之前,需要先注册一个账号,具体如下所示:1. 打…

    C# 2023年5月31日
    00
  • Unity实现单机游戏每日签到系统

    下面我将详细讲解“Unity实现单机游戏每日签到系统”的完整攻略。本文将分为以下三个部分来进行讲解: 准备工作 实现过程 示例说明 准备工作 在开始实现签到系统之前,您需要准备以下工作: Unity开发环境:Unity是一款跨平台的游戏引擎,您需要提前安装好Unity并且熟悉Unity的基础操作。 程序代码:签到系统的核心是代码实现,您需要根据自己的游戏需求…

    C# 2023年6月1日
    00
  • c# 操作word写入特殊字符的实例

    下面是关于“c# 操作word写入特殊字符的实例”完整攻略。 1. 确定写入的特殊字符 在使用C#操作Word写入特殊字符之前,必须确定写入的特殊字符是什么。常见的特殊字符包括制表符、回车、换行、页码、分隔符等。特殊字符的插入方法不同,因此确定特殊字符种类非常重要。 2. 打开Word文档 在C#中操作Word的第一步是打开Word文档。可以通过以下代码来打…

    C# 2023年6月7日
    00
  • CPU占用率高的N种原因

    首先我们来详细讲解下“CPU占用率高的N种原因”的完整攻略。 简介 CPU占用率高通常意味着系统资源的占用比较高,导致系统出现卡顿、卡死、运行缓慢等问题。对于软件开发与运维工程师来说,了解高CPU占用率的原因,是进行系统性能调优的基础。 N种原因 下面我们列举了高CPU占用率的N种原因,其中包括: 程序死循环 进程/线程阻塞 垃圾回收 高负载 CPU过热 接…

    C# 2023年6月7日
    00
  • ASP.NET MVC学习笔记

    ASP.NET MVC学习笔记 – 完整攻略 什么是 ASP.NET MVC ASP.NET MVC 是一种基于模型-视图-控制器(Model-View-Controller,MVC)模式的架构,它提供了一种让 Web 应用程序的逻辑和表现分离的方式。ASP.NET MVC 通过区分应用程序的逻辑(控制器)和 UI(视图)来改进应用程序的可测试性和可维护性。…

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