C#(C Sharp)学习笔记_封装【十八】

什么是封装?

  1. 封装是面向对象思维的三大特性之一。
  2. 封装是将数据和对数据进行操作的函数绑定到一起的机制。它隐藏了对象的内部状态和实现细节,只对外提供必要的接口,从而确保对象内部状态的完整性和安全性。封装的主要目的是增强安全性和简化编程,用户只需要知道对象提供哪些方法,而不需要了解内部细节。
  3. 就好比是一部手机,我们知道手机的具体硬件,他给我们提供了很多功能,但同时呢也隐藏了一部分不让我们用户知晓的信息,以确保手机的安全和完整。

访问修饰符

  1. 访问修饰符是关键字,用于指定成员或类型已声明的可访问性。
  2. 我们在进行封装时,可以给予封装体不同级别的访问权限。

在这里插入图片描述
4. 可使用访问修饰符指定以下 7 个可访问性级别:

  • public:访问不受限制。
  • protected:访问限于包含类或派生自包含类的类型。
  • internal:访问限于当前程序集。
  • protected internal:访问限于当前程序集或派生自包含类的类型。
  • private:访问限于包含类。
  • private protected:访问限于包含类或当前程序集中派生自包含类的类型。
  • file:已声明的类型仅在当前源文件中可见。 文件范围的类型通常用于源生成器。
  1. 例如:当我们创建一个类,并在其中定义一个Simple( )私有方法,那么在另一个类的Main( )方法中将无法调用该类中的私有方法,若我们在Main( )所处的类中定义一个Ease( )私有方法,我们会发现,我们可以直接调用该方法。这是因为Private修饰符访问限于包含类,也就是说只能访问本类中的私有方法。

using System;
namespace Project
{
    public class Boom
    {
        private static void Simple()    // 定义私有方法
        {
            Console.Write("Hello World");
        }
    }
    public class Almango
    {
        private static void Ease()    // 定义私有方法
        {
            Console.Write("你好世界");
        }
        static void Main(string[] args)
        {
            Boom.Simple();    
            // 无法调用“Boom.Simple()”不可访问,因为它具有一定的保护级别 CS0122
            Almango.Ease()
            //  可调用
            
        }
    }
}
  1. 本次以Private作为例子,更多修饰符的具体用法,可参考官方文档

实例演示

using System;
namespace Almango
{
    public class Fight()
    {
        public int attack;   // 声明攻击力
        public int blood;    // 声明血量

        public void FunctionFight( int attack, int blood)   // 定义构造函数
        {
            this.attack = attack;   
            this.blood = blood;
        }
        public void Fightting()
        {

            Fight A = new Fight();   // 实例化 A玩家
            Fight B = new Fight();   // 实例化 B玩家
            A.FunctionFight(20, 100);
            B.FunctionFight(40, 100);

            A.blood -= B.attack;    // 模拟A玩家被B玩家攻击扣血场景

            Console.WriteLine("A玩家受到B玩家的攻击:" + "-" + B.attack);
            Console.Write("A玩家剩余血量:" + A.blood + "\n");
            Console.Write("B玩家剩余血量:" + B.blood + "\n");
        }
        public static void Main(string[] args)
        {
            Fight Play = new Fight();

            Play.Fightting();   

        }
    }
}
>>> A玩家受到B玩家的攻击:-40
>>> A玩家剩余血量:60
>>> B玩家剩余血量:100
  1. 示例代码通过封装游戏在战斗模式中的不同过程:从攻击,到攻击计算,到输出受击后的血量,它使得我们大大减少了代码量和提高了代码的运行效率,不仅如此,这样看上去更简约和优雅。
  2. 对于每一位面向对象语言的初学者来说,多学多练,掌握好面向对象的三大特征,这对于往后开发效率的提高和可扩展性至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/714068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【教学类-64-02】20240610色块眼力挑战(二)-2-25宫格色差10-100(10倍)(星火讯飞)

背景需求 以下的色块眼里挑战需要人工筛选图片,非常繁琐。 【教学类-64-01】20240607色块眼力挑战(一)-0-255随机底色-CSDN博客文章浏览阅读446次,点赞12次,收藏5次。【教学类-64-01】20240607色块眼力挑战&#xff…

C语言——自定义类型:结构体

前言 本篇博客位大家介绍C语言中一块儿重要的内容,那就是结构体,关于结构体的内容,大家需要深入掌握,在后面的学习中依然会用到,如果你对本文感兴趣,麻烦点进来的老铁一键三连。多多支持,下面我…

食家巷助力“甘肃乡村振兴,百强主播·打call 甘味”活动

2024年,甘肃省“商务乡村振兴”促消费暨“百强主播打call 甘味”活动在天水市龙城广场盛大启动。 活动现场,来自甘肃省 14 个市州的农特产品展台琳琅满目,让人目不暇接。此次活动中,各企业带来了多款深受消费者喜爱的产品&a…

【C++提高编程-06】----C++之STL-函数对象、谓词、仿函数

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

这 10 种架构师,不合格!

大家好,我是君哥。 架构师这个岗位是好多程序员努力的方向,尤其是刚毕业的时候,对架构师有一种崇拜感。毕竟从初级到架构要经历好几次级别飞跃。 工作时间久了,发现架构师这个岗位,其实定义非常广泛,根据工…

linux 部署瑞数6实战(维普,药监局)sign第二部分

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx …

如何通过在线封装APP快速上线?小猪APP分发帮你解决难题

你是否曾经为了上线一款APP而头疼不已?开发完成后,封装、测试、分发,这些繁琐的步骤让人望而却步。别担心,小猪APP分发来了!这篇文章将带你了解如何通过在线封装APP快速上线,并且告诉你为什么选择小猪APP分…

[Linux] TCP协议介绍(3): TCP协议的“四次挥手“过程、状态分析...

TCP协议是面向连接的 上一篇文章简单分析了TCP通信非常重要的建立连接的"三次握手"的过程 本篇文章来分析TCP通信中同样非常重要的断开连接的"四次挥手"的过程 TCP的"四次挥手" TCP协议建立连接 需要"三次握手". "三次挥手&q…

Postman下发流表至Opendaylight

目录 任务目的 任务内容 实验原理 实验环境 实验过程 1、打开ODL控制器 2、网页端打开ODL控制页面 3、创建拓扑 4、Postman中查看交换机的信息 5、L2层流表下发 6、L3层流表下发 7、L4层流表下发 任务目的 1、掌握OpenFlow流表相关知识,理解SDN网络中L…

飞书API 2-1:如何通过 API 创建文件夹?

本文探讨如何通过飞书的 API 来创建文件夹。通过 API 创建的文件夹,一般是放在共享空间,如果要放在个人空间,建议手动创建。 查看 API 文档 API 路径,可在飞书开放平台的服务端 API,依次查找云文档>云空间>文件…

javaWeb项目-springboot+vue人事管理系统功能介绍

本项目源码:java-springbootvue人事管理系统源码说明文档资料资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot…

高级人工智能复习 题目整理 中科大

题目整理 填空 1.准确性,复杂性,验证集 2. 3 2 n 3^{2^n} 32n 3 C 2 n m 3^{C^m_{2n}} 3C2nm​ 3 m 3^m 3m n 1 n1 n1 3. 状态 从状态s采取行动a后继续采用策略 π \pi π的收益 环境 4. 语法 语义 推理规则 5. 参与者,策略集&#xff…

算法排序之冒泡排序及优化

public class Bubbling {public static void main(String[] args) {// 定义需要排序的数组int[] arr {0,1,21,2,31,12,5,8};// 冒泡排序方法bubbleSort(arr);bubbleOptSort(arr);}/*** 冒泡排序* param arr 数组*/public static void bubbleSort(int[] arr){// i0,…

【C语言】解决C语言报错:Format String Vulnerability

文章目录 简介什么是Format String VulnerabilityFormat String Vulnerability的常见原因如何检测和调试Format String Vulnerability解决Format String Vulnerability的最佳实践详细实例解析示例1:直接使用不受信任的输入作为格式化字符串示例2:未验证格…

英伟达开源最强通用模型Nemotron-4 340B:开启AI合成数据新纪元

【震撼发布】 英伟达最新力作——Nemotron-4 340B,一个拥有3400亿参数的超级通用模型,震撼登场!这不仅是技术的一大飞跃,更是AI领域的一次革命性突破! 【性能卓越】 Nemotron-4 340B以其卓越的性能超越了Llama-3,专为合成数据而生。它将为医疗健康、金融、制造、零售等行…

基于WPF技术的换热站智能监控系统09--封装水泵对象

1、添加用户控件 2、编写水泵UI 控件中用到了Viewbox控件,Viewbox控件是WPF中一个简单的缩放工具,它可以帮助你放大或缩小单个元素,同时保持其宽高比。通过样式和属性设置,你可以创建出既美观又功能丰富的用户界面。在实际开发中…

RabbitMQ揭秘:轻量级消息队列的优缺点全解析

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 亲爱的读者朋友们,大家好!我是小米,一个热爱技术、喜欢分享的大哥哥。今天我们来聊聊一个在消息队列领域非常重要的工具——RabbitMQ。作为一个在通信…

EasyExcel文件导出,出现有文件但没有数据的问题

一开始由于JDK版本过高,我用的17,一直excel没有数据,表头也没有,后来摸索了好久,找了资料也没有,后来改了代码后报了一个错误(com.alibaba.excel.exception.ExcelGenerateException: java.lang.…

如何让视频有高级感 高级感视频制作方法 高级感视频怎么剪 会声会影视频剪辑制作教程 会声会影中文免费下载

高质量视频通常具有清晰的画面、优质的音频和令人印象深刻的视觉效果。这篇文章来了解如何让视频有高级感,高级感视频制作方法。 一、如何让视频有高级感 要让视频有高级感,要注意以下几个要点: 1、剧本和故事性:一个好的剧本和…

Vue主要使用-03

组件通讯 组件通讯也是我们需要了解的,在我们的实际开发中,我们使用的非常多,比如父组件内的数据传入到子组件,子组件的数据传入到父组件,什么是父组件什么是子组件?父组件内包含着我们的子组件,我们的父组件可以有多个子组件,父组件就是我们使用子组件拼接的。 …