C#中属性的封装
封装的一般性
封装快捷键:Ctrl+R+E
封装的目的:
public修饰的属性,不够安全;private修饰的属性,无法使用
所以,用到了封装:
封装就是 隐藏对象的信息,但要流出访问的接口
封装代码示例:
class Child
{
private string name;
private string sex; public string Name //封装的时候,要用public,保证类外能调用
{ //属性什么类型,封装的时候就用什么类型,
get //此处用string
{
return name; //属性一般用小写字母表示
} //但封装的时候首字母大写 set //封装方法里面就一个get{return 属性名称} 和
{ //一个set{属性名称=value;}
name = value;
} //value是一个关键字
} public string Sex
{
get
{
return sex;
}
set
{
sex = value;
}
} public void play() {
Console.WriteLine("I'm playing football!");
}
}
主函数调用:
class Program
{
static void Main(string[] args)
{
Child c = new Child(); //首先创建 一个 对象
c.Name = "xiaoming"; //赋值时 对象名.封装方法名
c.Sex = "男";
Console.WriteLine(c.Name); //引用时 对象名.封装方法名
Console.WriteLine(c.Sex);
c.play();
}
}
封装和方法不同,不需要形参
不管是给属性赋值还是引用属性的值,只需要调用封装函数就行
如若封装过程中出错,编辑器会自动报错,只需要根据报错修改即可
通过set块约束属性赋值
有时候因为某些原因,给属性赋的值不符合实际情况,如:不能给一个小孩赋值60岁
通过set块约束,无非是在set里加一个条件判断语句
set
{
if (value>=&&value<=)
{
age = value;
} }
C#中属性的封装的更多相关文章
- Struts2中属性驱动与模型驱动
属性驱动: 1.概念 能够利用属性驱动获取页面表单元素的内容 2.步骤 1.在action中声明属性,属性的名称和页面元素中name属性的值保持一致 2.action中的属性必须有set和get方法 ...
- Unity属性的封装、继承、方法隐藏
(一)Unity属性封装.继承.方法隐藏的学习和总结 一.属性的封装 1.属性封装的定义:通过对属性的读和写来保护类中的域. 2.格式例子: private string departname; // ...
- 通过反射将request中的参数封装到对象中
import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.text.SimpleDateFo ...
- vue中Axios的封装和API接口的管理
前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...
- 聊聊 Vue 中 axios 的封装
聊聊 Vue 中 axios 的封装 axios 是 Vue 官方推荐的一个 HTTP 库,用 axios 官方简介来介绍它,就是: Axios 是一个基于 promise 的 HTTP 库,可以用在 ...
- js静态属性,实例属性,封装性,prototype,__proto__综合解析
原创作品,转载请注明来源,sogeisetsu,我的csdn上也有这篇文章csdn js静态属性,实例属性,封装性,prototype,__proto__综合解析 下面是我在写博客的源代码,您可以先不 ...
- 『无为则无心』Python面向对象 — 51、私有成员变量(类中数据的封装)
目录 1.私有成员变量介绍 (1)私有成员变量概念 (2)私有成员变量特点 (3)私有成员变量体验 2.属性私有化工作原理 3.定义成员变量的标识符规范 4.私有成员变量的获取和设置方式 1.私有成员 ...
- VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别
在VB中,属性是可以有参数的,而VBA中属性使用参数非常常见.比如最常用的:Worksheet.Range("A1:A10") VB的语法,使用参数的不一定是方法,也有可能是属性 ...
- [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
随机推荐
- Qt网络获取本机网络信息
下面我们就讲解如何获取自己电脑的IP地址以及其他网络信息.这一节中,我们会涉及到网络模块(QtNetwork Module)中的QHostInfo ,QHostAddress ,QNetworkInt ...
- linux内核中的MFD子系统
分析用的内核版本为5.1.3 1.MFD全称 Multi-function Device,多功能设备 2. 为何会出现MFD子系统 由于出现了一类具有多种功能的外围设备或cpu内部集成的硬件模块 3. ...
- zabbix*邮件报警 *用户参数User parameters *定义key值 *Agentd主动模式与被动模式
邮件报警 #下载安装邮件报警系统wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz yum - ...
- [转]Nginx实现高并发的原理
Nginx 首先要明白,Nginx 采用的是多进程(单线程) & 多路IO复用模型.使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器. 异步非阻塞(AIO)的详解ht ...
- easyUI之Messager(消息窗口)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- 搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
每个HTML元素都具有clientHeight offsetHeight scrollHeight offsetTop scrollTop 这5个和元素高度.滚动.位置相关的属性,单凭单词很难搞清楚分 ...
- 微信小程序:undefined Expecting 'STRING', got INVALID
出现问题: 问题原因:app.json中不能出现注释
- [CDH] New project for ML pipeline
启动后台服务: [CDH] Cloudera's Distribution including Apache Hadoop 这里只介绍一些基本的流程,具体操作还是需要实践代码. 一.开发环境配置 JD ...
- Centos安装openjdk
转载自:https://blog.csdn.net/youzhouliu/article/details/51183115 openjdk在linux各个平台下安装源中可以找到. 命令查找安装源中有什 ...
- Java数组(1):数组与多维数组
我们对数组的基本看法是,你可以创建它们,通过使用整型索引值访问它们的元素,并且他们的尺寸不能改变. 但是有时候我们需要评估,到底是使用数组还是更加灵活的工具.数组是一个简单的线性序列,这使得元素访问非 ...