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

C# 面向对象:基础概念

目录

面向过程 vs 面向对象

1. 思维模式的转换(最难的点)

2. 组织方式:数据与行为的归属

3. 扩展性:开闭原则的体现

对象(Object)

对象的特征:

类(Class)

(1)类的组成:

(2)this关键字

(3)访问修饰符(Access Modifiers)

构造函数

1.无参构造

2.有参构造

3.构造函数重载

在同一个类中,定义多个构造函数,只要参数不同即可。

(1)为什么需要构造函数重载

(2)构造函数重载 + this

4.静态构造函数(Static Constructor)

常见用途

5.私有构造函数(Private Constructor)

静态成员(static)

静态字段

静态方法

静态成员的核心特点

静态类(Static Class)


面向过程 vs 面向对象

维度

面向过程 (POP)

面向对象 (OOP)

核心思想

按步骤解决问题

按“对象”建模世界

组织方式

函数 + 数据

类 + 对象

关注点

“怎么做”

“谁来做”

扩展性

典型语言

C

Java / C# / C++

1. 思维模式的转换(最难的点)

POP(流程思维)

逻辑流:关注每一步如何执行。

OOP(对象思维)

逻辑流:关注哪个对象负责这个动作。

2. 组织方式:数据与行为的归属

POP:数据是“公开的”,函数随意操作数据,容易导致数据被误修改。

OOP:数据(属性)和行为(方法)绑定。外部只能通过“方法”访问数据,这就是封装

3. 扩展性:开闭原则的体现

POP 痛点:增加一个新功能(如新支付方式),往往需要修改原有的if-elseswitch语句,牵一发而动全身。

OOP 优势:通过继承创建新的子类(如WechatPay继承Payment),无需修改原有稳定的父类代码。

面向过程是“我一步步做”,面向对象是“我指挥对象去做”。

对象(Object)

对象是类的实例(Instance)

类(Class):模板 / 蓝图(不占内存)

对象(Object):根据类创建出来的具体实例(占用实际内存

对象 = 数据 + 行为

对象的特征:

1.占用实际内存

类本身只是定义,不分配堆内存

new创建对象时,才在堆内存中为属性分配空间

2.表示现实世界的一个具体事物

类 → “学生”(抽象概念)

对象 → “张三,18岁”(具体个体)

3.每个对象相互独立

不同对象的属性值互不影响

类(Class)

类是对象的模板 /

(1)类的组成:

成员

作用

字段(Field)

存储对象状态

属性(Property)

封装字段

方法(Method)

定义对象行为

构造函数

初始化对象

(2)this关键字

this表示当前对象实例
用途:
区分成员变量与参数
调用当前类的其他构造函数
传递当前对象

用法

示例

区分字段与参数

this.name = name;

调用本类方法

this.Introduce();

调用本类构造函数

: this(...)

(3)访问修饰符(Access Modifiers)

修饰符

说明

public

任何地方可访问

private

仅本类内部

protected

本类 + 子类

internal

同一程序集

protected internal

protected OR internal

构造函数

与类名相同,无返回值,用于初始化对象

new对象时自动调用,完成对象初始状态设置

规则

说明

与类名相同

Person

无返回值

void都不能写

自动调用

new时执行

1.无参构造

未显式定义构造函数时,编译器会默认提供

一旦定义了有参构造,默认无参构造消失

写了有参构造后,若仍需无参构造,必须手动补上。

2.有参构造

用于创建对象时直接赋值

3.构造函数重载

在同一个类中,定义多个构造函数,只要参数不同即可。

方法名相同(必须是类名)

参数个数 / 类型 / 顺序不同

(1)为什么需要构造函数重载

场景

说明

多种初始化方式

有的对象需要完整信息,有的只需要部分

提高灵活性

调用者按需选择

简化对象创建

避免大量重复赋值代码

(2)构造函数重载 +this

this复用构造函数逻辑,减少重复代码

好处:

代码集中

修改一处,全部生效

更易维护

4.静态构造函数(Static Constructor)

特点

说明

自动调用

类首次使用前

无参数

不能带参数

只执行一次

线程安全

无访问修饰符

不能写public/private

常见用途

初始化配置,缓存,日志系统

5.私有构造函数(Private Constructor)

构造函数被private修饰,不能在类外部使用new创建对象。

用途

目的

单例模式

保证全局只有一个实例

工具类

禁止创建类的实例

私有构造函数 vs 公有构造函数:

对比项

私有构造函数

公有构造函数

能否new

不能

使用场景

单例 / 工具类

普通对象

对象数量

0 或 1

任意

设计意图

限制对象创建

允许自由创建

私有构造函数用于禁止类被实例化,常用于工具类(只含静态方法)和单例模式(保证全局只有一个实例)

静态成员(static)

静态成员属于类本身,而不是某个具体的对象。

静态字段

特点

说明

属于类

不依附于对象

所有对象共享

一处改,处处变

生命周期长

程序运行期间一直存在

静态方法

特点

所有对象共享

无需实例化

不能访问非静态成员

静态成员的核心特点

特点

说明

属于类

通过类名访问

无需实例化

不能用new

不能访问非静态成员

不能直接使用实例字段 / 方法

所有对象共享

全局唯一副本

静态成员 vs 实例成员

对比项

静态成员

实例成员

归属

对象

访问方式

类名.成员

对象.成员

是否共享

生命周期

程序级

对象级

静态类(Static Class)

限制:

限制

说明

不能被实例化

不能new

不能有实例成员

只能包含static

自动密封

不能被继承

静态类常见用途 :

工具类(Math、Convert)

扩展方法

全局辅助方法

http://www.zskr.cn/news/1395695.html

相关文章:

  • 告别坐标点击!用Poco精准定位Android App UI控件(附完整代码示例)
  • 多模态大模型技术深度解析:从 CLIP 到 LLaVA 的视觉语言融合原理
  • 车机端实时诊断失效,订单履约中断频发,深度复盘Lovable微服务链路追踪断点及全链路可观测性重构路径
  • CTF逆向爆破实战:C++进程级暴力框架设计与优化
  • 2026年5月遵义地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • 从零搭建Python自动化测试环境:手把手教你为蓝桥杯软件测试赛项配置Firefox+WebDriver
  • 告别‘文件被占用’:手把手教你用Process Explorer的搜索功能解决删除难题
  • 告别Steam平台限制:WorkshopDL让你在任何平台都能下载创意工坊模组
  • 上海交大MINT团队提出Evo - Depth:不增硬件负担,兼顾机器人VLA性能与部署效率
  • Qt5中comboBox控件更新列表内容
  • 2026年APP爬虫终极指南:从抓包到签名破解,干翻所有主流反爬
  • 专业的青少年心理咨询排名
  • 当AI成为公司的操作系统:一场两千年来最彻底的组织革命
  • 协调控制柜在微电网中的核心地位:数据枢纽、控制核心、安全屏障
  • 基于GPS与ATmega328P的高精度时钟设计与实现
  • 用STM32CubeMX+HAL库5分钟搞定STM32F407探索者开发板的外部中断配置
  • 使用 Taotoken CLI 工具一键配置多款 AI 助手的接入参数
  • 2026视频怎么去水印?视频去水印方法+工具推荐实测大全
  • 3分钟掌握MulimgViewer:终极图像对比与批量处理完全指南
  • 2026年5月山南地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • SAP S/4中对外贸易的物料主数据的商品编码处理
  • 从零到一:基于Keycloak构建企业级统一身份与门户平台实战
  • 2026年5月天水地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • 2026年5月南京地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • ARMv8/v9 TCRMASK_EL2寄存器解析与应用实践
  • C++知识点复习(面向面试5)
  • 为开源agent工具hermes配置taotoken作为自定义模型供应商
  • 2026年5月南平地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • 2026收藏|Hermes智能体自进化原理拆解!AI Agent越用越聪明的核心秘诀
  • 小红书下载用什么工具?2026实测小红书无水印下载工具推荐