【超详细】C#基础-面向对象

目录

1.什么是面向对象?

2.什么是类与对象?

3.常见的编程思想

1)面向对象编程(Object-Oriented Programming, OOP)

2)面向过程编程(Process-Oriented Programming, POP)

4.比较面向对象和面向过程

5.面向对象的主要思想

1)分而治之

2)高内聚,低耦合

3)封装细节

6.面向对象的三大特性

1)封装(Encapsulation)

2)继承(Inheritance)

3)多态(Polymorphism)


       今天来分享一下面向对象的编程思想。主要介绍面向对象的基本概念,区分面向对象和面向过程,了解面向对象的主要思想、三大特性。

1.什么是面向对象?

       面向对象是一种编程思想,将现实世界中的事物抽象成对象,并通过对象之间的交互来解决问题。面向对象的的核心是类和对象。

2.什么是类与对象?

类:抽象的数据类型,定义了对象的属性(数据)和方法(行为),是对象的抽象。
对象:类的实例,是类的具体实现。

3.常见的编程思想

1)面向对象编程(Object-Oriented Programming, OOP)

       面向对象编程是一种以对象为基础的编程思想,类、对象是核心概念。面向对象的核心思想是将数据和操作数据的方法封装在一起,以提高软件的重用性、灵活性和扩展性。


2)面向过程编程(Process-Oriented Programming, POP)

       面向过程编程是一种以过程为基础的编程思想,函数、变量、语句等概念为核心。面向过程编程的基本思想是将程序按照流程分解为一系列的函数或过程,通过函数之间的调用来完成任务。

4.比较面向对象和面向过程

面向对象:性能较差,因为类调用时需要实例化,开销比较大,比较消耗资源;易维护、易复用、易扩展,因为将数据和操作数据的方法封装在一起,提高了代码的复用性。
面向过程:性能好;不易维护、不易复用、不易扩展。

       总而言之,面向对象以类为基础,从对象着手,面向过程以过程为基础,从功能着手,面向对象的开发效率,复用性,维护性好更好。

5.面向对象的主要思想

1)分而治之

       分而治之是一种将复杂问题分解为更小、更易管理的部分的策略。在面向对象编程中,将系统分解为多个独立的模块或类,每个模块或类负责处理特定的任务。通过这种方式,开发人员可以更容易地理解和处理每个部分,从而简化整个系统的开发和维护。

2)高内聚,低耦合

高内聚:指模块内部各个元素彼此结合的紧密程度。一个高内聚的模块或类应该专注于完成一个特定的任务或功能,而不涉及其他不相关的功能。这样可以提高代码的可读性和可维护性,因为每个模块或类的职责清晰明确。
低耦合:指模块之间的关系强度。低耦合意味着模块之间的依赖性较低,一个模块的变化不会对其他模块产生重大影响。这样可以提高系统的灵活性和可扩展性,因为可以在不修改其他模块的情况下对某个模块进行修改或扩展。

3)封装细节

       封装细节是指将类的实现细节隐藏起来,只暴露必要的接口给外部使用。通过封装,可以防止外部代码直接访问或修改类的内部状态,从而提高代码的安全性和稳定性。封装还使得类的实现可以独立于其使用方式进行修改,而不会影响其他部分的代码。

6.面向对象的三大特性

1)封装(Encapsulation)

       封装是指将数据和操作数据的方法捆绑在一起,隐藏对象的内部状态,只通过公共接口与外部进行交互,从而保护数据不被外部直接访问和修改,提高了代码的安全性和可维护性。

public class Member
{public string Name { get; set; }public int Salary { get; set; } private string Sex { get; set; } //私有属性public void SetSex(string sex){this.Sex = sex;}
}

2)继承(Inheritance)

       继承是指一个类可以继承另一个类的属性和方法,从而避免重复编写代码。子类可以重用父类的代码,并且可以在不修改父类的情况下扩展或修改其功能。

public class Employee : Member //Employee类继承自Member类
{public string Department { get; set; } //新增属性Departmentpublic virtual void DisplayInfo(){}
}

3)多态(Polymorphism)

       多态是指同一行为的不同实现。多态允许不同类的对象对同一消息做出响应。可以通过方法重载和方法重写等来实现,使得代码更加灵活和可扩展。

public class Manager : Employee //Manager类继承自Employee类
{public override void DisplayInfo() //重写DisplayInfo方法{Debug.Log($"Manager: {Name}, Salary: {Salary}, Department: {Department}");}
}

       好了,本次的分享到这里就结束啦,希望对你有所帮助~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点评项目-4-隐藏敏感信息、使用 redis 优化登录业务

一、隐藏敏感信息 之前我们对 /user/me 路径,直接返回了登录的所有用户信息,其中的 passward 等敏感信息也会被返回到前端,这是很危险的,故我们需要选择性的返回用户信息,隐藏敏感用户信息 我们可以创建一个 UserDTO…

【Qt】详细Qt基础 (包括自定义控件)

目录 QT 概述创建项目项目文件(. pro)main.cppmainwindow.uimainwindow.hmainwindow.cpp 窗口类QWidget 窗口显示QDialog 窗口 QPushButton创建显示 对象树基本概念功能 坐标体系控件Item WidgetsQListWidgetQTreeWidgetQTableWidget 自定义控件 QT 概述…

一键安装与配置Stable Diffusion,轻松实现AI绘画

随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。 最新 Stable Di…

当今SNARKs全景

1. 引言 前序博客有: ZKP历史总览SNARK原理示例SNARK性能及安全——Prover篇SNARK性能及安全——Verifier篇Transparent 且 Post-quantum zkSNARKsSNARK DesignRollup项目的SNARK景观 SNARKs因: proof size证明时长验证时长密码学信任假设是否需要tr…

前端开发设计模式——装饰器模式

目录 一、装饰器模式的定义和特点 1.定义 2.特点 二、装饰器模式的实现方式 1.在原生JS中实现(以类的形式为例) 2、在Vue中实现(以指令和混入为例) 2.1、指令方式实现装饰功能 2.2、混入方式实现装饰功能 三、装饰器模式的…

基于方块编码的图像压缩matlab仿真,带GUI界面

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 编码单元的表示 4.2编码单元的编码 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 下图是随着方块大小的变化,图像的压缩率以及对应的图像质量指标PSN…

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件,而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档,无论相关方…

TCN-Transformer时间序列预测(多输入单预测)——基于Pytorch框架

1 数据集介绍 我们使用的数据集包含以下几个重要的属性: date(日期) open(开盘价) high(最高价) low(最低价) close(收盘价) pre_close&…

IDE启动失败

报错:Cannot connect to already running IDE instance. Exception: Process 24,264 is still running 翻译:无法连接到已运行的IDE实例。异常:进程24,264仍在运行 打开任务管理器,找到PID为24264的CPU线程,强行结束即可。 【Ct…

EXCEL_光标百分比

Public Sub InitCells()Dim iSheet As LongFor iSheet Sheets.Count To 1 Step -1Sheets(iSheet).ActivateActiveWindow.Zoom 85ActiveWindow.ScrollRow 1ActiveWindow.ScrollColumn 1Sheets(iSheet).Range("A1").ActivateNext iSheetEnd Sub对日项目中的文档满天…

CSS 布局——清除浮动 (二)

目录 1. 清除浮动 2. 清除浮动本质 3. 清除浮动 4. 清除浮动方法 4.1 额外标签法 4.1.1 总结 4.2 父级添加 overflow 4.3 after 伪元素法 4.4 双伪元素清除浮动 5 总结 1. 清除浮动 这是上面的源代码&#xff1a; <!DOCTYPE html> <html lang"en"&…

【FPGA开发】Modelsim如何给信号分组

前面已经发布过了一篇关于 Modelsim 的入门使用教程&#xff0c;针对的基本是只有一个源文件加一个仿真tb文件的情况&#xff0c;而实际的工程应用中&#xff0c;往往是顶层加多个底层的源文件结构&#xff0c;如果不对信号进行一定的分组&#xff0c;就会显得杂乱不堪&#xf…

第33次CCF计算机软件能力认证-第4题十滴水

题干&#xff1a; 十滴水是一个非常经典的小游戏。 小 C C C 正在玩一个一维版本的十滴水游戏。 我们通过一个例子描述游戏的基本规则。 游戏在一个 1 c 1c 1c 的网格上进行&#xff0c;格子用整数 x ( 1 ≤ x ≤ c ) x(1≤x≤c) x(1≤x≤c) 编号&#xff0c;编号从左往…

Python学习-函数

函数 文章目录 函数定义与调用参数传递内存分析返回值参数定义默认值参数个数可变的参数关键字参数 变量的作用域 匿名函数基本语法示例lambda与排序高阶函数map函数reduce函数filter函数 多关键字排序 定义与调用 函数可以嵌套用 先定义后调用 def calc(a,b):cabreturn cre…

一台电脑轻松接入CANFD总线_来可CNA板卡介绍

在工业控制领域&#xff0c;常常使用的总线技术有CAN(FD)、RS-232、RS-485、Modbus、Profibus、Profinet、EtherCAT等。RS-485以其长距离通信能力著称&#xff0c;Modbus广泛应用于PLC等设备&#xff0c;EtherCAT则以其低延迟和高实时性在自动化系统中备受青睐。 其中&#xff…

Java虚拟机(JVM)介绍

**Java虚拟机&#xff08;JVM&#xff09;**是Java平台的核心组件&#xff0c;它提供了一个运行时环境&#xff0c;使得Java程序可以在不同的操作系统和硬件平台上运行而无需修改。 JVM的架构 JVM主要由以下几个部分组成&#xff1a; 类加载器&#xff08;Class Loader&#xf…

对后端返回的日期属性进行格式化(扩展 Spring MVC 的消息转换器)

格式化之前 格式化之后&#xff1a; 解决方式 方式一 在属性中加上注解&#xff0c;对日期进行格式化 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;//JsonFormat(pattern &quo…

小白必看web专题!PHP-WebShell免杀(基础版)!!真的很简单!(全网最详细版本)

大家好&#xff0c;我是Dest1ny&#xff01; 最近一直在搞辅导啥的&#xff0c;所以没啥时间搞写&#xff5e; 也谢谢大家一直的点赞&#xff0c;今天特意把之前的web专题再发一个。 废话不多说&#xff0c;我们直接开始&#xff01; CLASS-1 WebShell免杀测试 渊龙Sec团队导…

「Ubuntu」根目录存储空间不足

Linux系统不同于 Windows系统&#xff0c;复杂的文件系统常常让人头疼&#xff0c;特别是动不动就存储空间不足&#xff0c;简单的清空回收站根本不管用&#xff0c;在此推荐一个绝对好用的方法&#xff0c;并且还可以多学习一条 Linux命令 1、du 使用方法 通过使用命令 du&am…

Ubuntu24.04 安装 NCAR Command Language(NCL)

目录 一般直接在Terminal中使用apt安装命令即可&#xff0c; 出现这样的问题&#xff0c; 如何解决这个问题呢&#xff1f; 一般直接在Terminal中使用apt安装命令即可&#xff0c; sudo apt install ncl-ncarg 但是&#xff0c;由于 Ubuntu 版本较新 Ubuntu 24.04&#xff…