一直以为自己算是比较理解什么是面向对象了,而在今天写代码的过程中发现了一些问题,原来自己不是那么的懂,整理了一下,给我和需要的朋友一个方便!
我现在还是一学生,欢迎交流,指教!
和以前一样以问题开头,如何在父窗体中操作子窗体的变量,如何在子窗体中操作父窗体的变量,又如何在这些操作中保持较好的高内聚和低耦合呢?
而这里面就 要提一下面向对象的特点了:封装、继承和多态
**封装**
在C#中可使用类来达到数据封装的效果,这样就可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。
在面向对象的世界中,大多数都是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不直接存取类中的数据,而是通过方法来存取数据,如此就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。
此外,封装还可以解决数据存取的权限问题,可以使用封装将数据隐藏起来,形成一个封闭的空间,然后就可以设置哪些数据只能在这个空间中使用,哪些数据可以在空间外部使用。如果一个类中包含敏感数据,有些人可以访问,有些人却不能访问。如果不对这些数据的访问加以限制,后果是很严重的。所以在编写程序时,要对类的成员使用不同的访问修饰符,从而定义他们的访问级别。
在这个使用过程中需要提到一下的是get和set访问器以及字段变量的区别了,这大概是最常用的了吧
class myclass
{
private int age;//私有的字段
public int Age //属性
{
get
{
return this.age;
}
set
{
this.age=value;
}
}
}
属性中能实现各种复杂的逻辑,而这些是直接把一个字段共有所不能实现的.从这里就能体现出get和set访问器带来的好处了;
具体有:
1、属性可以只读或只写,比如下面代码,共有字段变量一定是可读写的。
2、属性可附带错误检查或额外的的代码,共有字段变量的读写不能。
3、虽然这些都是编译器给带来的好处,但封装有很多好处,像细节隐藏,实现隐藏等。比如说有一天人可以活到200岁,更改if(value > 200)不会影响其他调用Age的函数。




















总结:属性除了公布字段外,还可以在属性上添加对字段的约束规则,比如只读,只写,读写规则,还可以对属性的值进行逻辑验证等等.另外从软件设计的角度来看,属性是方法,应该被 公开,而字段是数据 ,应该被封装.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律