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

C# 面向对象(OOP)编程关键知识点

C# 面向对象编程
C#的OOP(面向对象)编程是C#编程语言中最为精华的部分,如果没有学习C#的OOP部分,则可以认为就没有学习过C#。
C#语言是2001年,微软推出".Net战略"时,专门订制的一门编程语言,其基本的思想就是仿照JAVA语言的虚拟机原理,开发出“受托管”的中间语言。(即:C#编译后不是直接生成二进制EXE目标代码,而是先生成中间语言(IL),再根据不同的操作系统,最终解释生成为目标代码)。其最大的好处就是实现“跨平台性”,推出几年后随着功能与性能的不断完善,很快就成为了全世界最受欢迎的编程语言之一。

一、C# OOP编程基本介绍

面向对象概念:类、对象、类与对象的关系
面向对象三大特征: 封装/继承/多台

封装性:用访问修饰符来体现封装性
public 公共的
private 私有的
protected 受保护的
internal 本程序集的

构造函数:是维护一个类的完整性。可以通过类的构造函数,使得一个类构造出不同(型号/类别)的对象实体。
特征:(1) 构造函数名称与类名相同
(2) 构造函数没有返回数值,也不加 void 关键字
(3) 构造函数不需要调用,可以直接运行

方法的定义
方法的构成:(1) 方法的名称
(2) 方法的参数列表
(3) 方法的返回类型,如果没有返回数值,要加 void 关键字
(4) 方法体(方法的内容)

static 关键字
特点:(1) 用static 修饰的方法,叫静态方法
(2) 在实例方法中,调用静态方法,需要使用类名称调用
在静态方法中,调用静态方法,可以直接调用
用途:是简化编写,为了更容易被访问

继承的概念
继承使用符号 ":"来表示继承

在继承关系下,构造函数的规则
规则:实例化子类,系统先自动调用父类的构造函数,然后调用子类构造函数

关键字
base,this
base:代表父类对象
this:代表本类对象
适用范围:在子类与父类发生“方法覆盖”时候,为了能够调用被覆盖(或者“隐藏”)的方法,必须使用base

base 关键字在构造函数中的应用,即:显示调用父类构造函数。

析构函数
定义“~”定义析构函数。 作用是在本对象需要销毁之前,做一些清理工作。
比如在需要进行数据库连接,Socket 数据通信的时候,需要关闭对应的连接等。

命名空间
使用关键字: NameSpace 定义。
目的是:为了一个项目中,可以使用重名的类。(相当于是操作系统中的“虚拟目录”的概念)

访问修饰符
public: 最大访问级别
internal: 局部的。 在一个“程序集”中,都可以访问
protected: 受保护的类型。 除了自己能够访问,本类的子类也可以访问。(“继承链”)
private : 只能自己访问

面向对象中的“多态性”的概念

多态性—方法重载(静态多态性)
同一个类中,有多个方法名相同,但是方法的参数不同。
多态性-方法的重写 (动态多态性)
在继承关系的类中,父类中定义了“虚方法”(关键字:Virtual),子类使用关键字override 进行方法重写。
方法重写的目的: 就是可以不断优化代码的一种机制。

sealed 关键字
密封关键字
类/方法

抽象类/抽象方法
关键字: abstract
规则1: 一个抽象方法,必须存在于抽象类中。但是一个抽象类可以没有抽象方法。
规则2: 一个类继承抽象类,则必须“重写”抽象父类中的抽象方法。

接口/多重接口
关键字: interface
接口是与“类”相同的编程单位,相互之间不“隶属”。
规则1: 接口中只能定义抽象方法,不能有public , abstract 关键字。
规则2: 接口可以多种继承。
规则3: 一个类继承接口,则必须“实现”接口中所有的方法。

值类型与引用类型
值类型在方法传递的时候,是传递的自身的“拷贝”。
引用类型在方法传递的时候,是传递的自身的“地址”。
常用值类型与引用类型转换的关键字如下:
ref / out 关键字。
ref 关键字可以把值类型转变为引用类型。
out 关键字目的是可以让方法有多个输出参数。

属性
规则1: 属性是方法的简化,目的是控制类的“字段”的可访问性。

动态多态性
目的是为了更好的开发出灵活,功能强大的程序。
可以使用“虚函数”,“抽象方法”,“接口”来实现动态多态性。
建议使用“接口”来实现动态多态性,即:面向接口编程。

面向接口编程
接口最好功能单一。
接口可以通过继承关系实现功能强大的复合接口。

C#的OOP即面向对象开发三大特性: 封装、继承、多态,是非常核心的OOP开发思想。

概念
类与对象的关系.
创建类
类与对象的本质区别:
类是建筑蓝图、对象是按照这份蓝图来建造的房子。

访问区分符(修饰符)
访问修饰符是C#实现类的封装的最核心手段。
private: 私有的,只能本类访问,包括子类也不能访问,是最严格的控制访问。
public: 公有的,所有类都可以访问,是最松散的控制访问。
protected: 受保护的,也就是除了本类之外,只有自己的子类可以访问。
internal: 本程序集的,也就是说一个程序集内部都可以访问,外部不行。

构造函数
1)与类名同名。
2)自动运行。
3)不能返回任何数值,也不能加void。
4)每个类都必须有一个构造函数,用户不提供则系统会提供自己默认的构造函数。
5)构造函数的默认访问是private,但这样就不能在类的外部创建实例。
6)创建了带参数的构造函数,系统不会再创建默认构造函数。

特殊方法学习
1)使用static 定义静态字段与方法.
规则1:static 方法中,需用对象访问类中定义的任何实例字段与方法。
规则2:static 方法中,可以直接访问static字段与static方法。

2)Main 方法
Main() 方法是一个项目中唯一的入口程序,也就是程序开始执行的地方。

命名空间
使用NameSpace 关键字来规定一个“虚拟的目录”使得大型项目中,允许有重复的类名称存在。(这个技术类似操作系统中的“目录”的作用)
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/lajdflconcom/article/details/115766671


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

相关文章:

  • Brave127编译指南 Windows篇:部署Node.js(五)
  • CCI3.0-HQ:用于预训练大型语言模型的高质量大规模中文数据集
  • git配置远程仓库的认证信息
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • jmeter介绍、使用方法、性能测试、现参数化和数据驱动、分布式测试、压力测试、接口测试
  • 1111111111待修改--大流量分析(三)-BUUCTF
  • 服务器内存使用率多少会影响正常访问?
  • Linux命令-badblocks命令(查找磁盘中损坏的区块)
  • ubuntu22.04 安装部署05:禁用默认显卡驱动
  • LeetCode 207:课程表(图论,利用拓扑排序判断是否有环)
  • 数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208)
  • 详述FlinkSql Join操作
  • C/C++ - 异常处理
  • 麒麟信安战略投资湖南超能机器人技术有限公司,加速布局无人智能系统、自主可控机器人操作系统赛道
  • HarmonyOS远程真机调试方法
  • 侵入式智能指针和非侵入式智能指针
  • tsgctf-2021-lkgit-无锁竞争-userfaultfd
  • 【JavaWeb】头条新闻项目实现 基本增删改查 分页查询 登录注册校验 业务功能实现 第二期
  • python调用golang中函数方法
  • 面试高频知识点:2线程 2.1.6线程之间如何通信
  • 06 MP之自动填充+SQL执行的语句和速度分析
  • FreeRTOS中的任务上下文切换时间
  • 【OrangePi Zero2的系统移植】OrangePi Zero2 SDK说明
  • 2024年GPT如何发展?
  • 接口错误码以及对应的含义
  • Python进阶--爬取美女图片壁纸(基于回车桌面网的爬虫程序)