C# 面向对象之封装
2024-08-23 15:41:05
封装是指将类的内部数据隐藏起来不让对象实例直接对其操作,C#中提供了属性机制来对类内部的状态进行操作。
在C#中封装可以通过public、private、protected和internal等关键字来体现。
为什么要对类的内部进行封装呢?
例:
public class Person
{
public string name;
public int age;
}
如果我实例化上面这个类
Person p=new Person()
那么我给age(年龄)赋值为负数,这显然不符合业务逻辑,人的年龄可能为负数吗?
p.age="-1"
使用封装后
public class Person
{
private string name;
public string Name
{
get{return name;}
set{name=value;}
}
private int age;
public string Age
{
get{return age;}
set{
if(value>0)
{
age=value; //这里对年龄进行控制,年龄必须要大于0才能赋值.那么年龄为-1就不能赋值
}
else
{
throw(new ArgumentException("error", value,"年龄不能为负数"));//这里会抛出异常
}
}
}
}
封装后对象实例只能对属性进行操作,属性中可以写下自己的逻辑来控制。
最新文章
- js小程序写法优化
- java中的static使用--静态变量、静态方法
- mina2线程详解
- 2 DelayInterval延时间隔类——Live555源码阅读(一)基本组件类
- loj 1221(spfa判正环)
- .NET: C#: Datetime
- WPF:xmal 静动态资源
- lseek()函数
- 【Qt】命令行编译Qt程序(nmake)【转】
- 创建MySQL从库
- 【转载】Apache Kafka:下一代分布式消息系统
- 补充:sql server 中的相关查询、case函数
- 【C#基础】实现URL Unicode编码,编码、解码相关整理
- Android 6.0 闪光灯的使用
- orcle 索引的使用
- jQuery经典案例
- centos 6.8 设置svn钩子同步至web目录
- 设置dataGridView单元格颜色、字体、ToolTip、字体颜色
- BZOJ 1022: [SHOI2008]小约翰的游戏John (Anti-nim)
- 给 MSYS2 添加中科大的源
热门文章
- Process 'command 'D:\AndroidSDK\ndk-bundle\ndk-build.cmd'' finished with non-zero exit value 2
- Mall电商项目总结(一)——项目概述
- Mapper3中Example的高级使用方法
- 在ubuntu16.04上编译android源码【转】
- poj2773 —— 二分 + 容斥原理 + 唯一分解定理
- ffmpeg 的一些学习网站
- C#入门---2、C#装备知识(C#创建桌面程序的时候创建的是什么应用程序)
- BZOJ-3439:Kpm的MC密码(Trie+DFS序+主席树)
- linux下配置jdk+tomcat
- hihoCoder2月29日(字符串模拟)