ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

封装

2022-04-06 13:34:37  阅读:182  来源: 互联网

标签:Console string emp WriteLine 封装 性别 public


(1)广义:将多个数据定义和行为定义装起来。

(2)狭义:将属性私有化,通过公有化的方式进行操作,提高代码的安全性。

看如下没有封装的例子:

创建一个员工类:

public class Employee {
	//public:公有,所有地方都可以访问,private:私有,只有自己内部可以访问 	
	//不封装
    public string empNO;  //工号
    public string empName;  //姓名
    public string empSex; //性别
	//方法
	public void sayHi()  //自我介绍
	{
		Console.WriteLine("大家好");
		Console.WriteLine("我的学号是:"+this.empNO);
		Console.WriteLine("我的姓名是:" + this.empName);
		Console.WriteLine("我的性别是:" + this.empSex);
	}
}

在main方法中创建员工,并且为字段赋值,调用sayHi()方法打印信息。

Employee emp = new Employee();
emp.empNo = "001";
emp.empName = "张三";
emp.empSex = "中";
emp.sayHi();

我们可以看到,当我们对性别赋值错误,程序没有做任何处理,直接执行成功了,并且将错误的性别可以直接通过sayHi()方法打印出来。

为了解决此代码安全性问题,我们可以进行属性封装。

C#中将字段封装成属性,需要将字段设置成private私有,然后添加public的属性,指定get,set访问器:

public class Employee {
	//public:公有,所有地方都可以访问,private:私有,只有自己内部可以访问 
	//封装
	private string empNO;  //学号
	//属性封装的基本语法格式,其中get表示属性可读,set表示属性可写。
	public string EmpNo
	{
		get{return empNO;}
		set{empNO=value;}
	}
    
	//如果不需要做任何控制,可以省略私有成员,简写如下
	public string EmpName{get;set;}
	
	private string empSex; //性别	
	//如果对性别进行属性封装,规定性别赋值只能是“男”或“女”
    public string EmpSex
    {
        get { return empSex; }
        set {
            if (value.Equals("男") || value.Equals("女"))
            {
            	empSex = value;
            }
            else
            {
            	empSex = "";
            	Console.WriteLine("性别输入有错误!");
            }
        }
    }
	
	//方法
	public void sayHi()  //自我介绍
	{
		Console.WriteLine("大家好");
		Console.WriteLine("我的学号是:"+this.EmpNO);
		Console.WriteLine("我的姓名是:" + this.EmpName);
		Console.WriteLine("我的性别是:" + this.EmpSex);
	}
}

在main方法中创建员工,并且给属性赋值,调用sayHi()方法打印信息。

Employee emp = new Employee();
emp.EmpNo = "001";
emp.EmpName = "张三";
emp.EmpSex = "中";
emp.sayHi();

此时,程序可以进行性别的判断,将错误值进行屏蔽,打印出来的信息中性别是空的。

标签:Console,string,emp,WriteLine,封装,性别,public
来源: https://www.cnblogs.com/wml-it/p/16105925.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有