美文网首页
13-01-封装

13-01-封装

作者: D丝学编程 | 来源:发表于2021-04-06 09:09 被阅读0次

(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();

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

相关文章

  • 13-01-封装

    (1)广义:将多个数据定义和行为定义装起来。 (2)狭义:将属性私有化,通过公有化的方式进行操作,提高代码的安全性...

  • JavaScript面向对象与设计模式

    1. 面向对象 1.1 封装 封装的目的在于将信息隐藏。广义的封装不仅包括封装数据和封装实现,还包括封装类型和封装...

  • 02.OOP面向对象-3.一些理解

    对封装的理解?封装,类本身就是一个封装,封装了属性和方法。方法也是封装,对一些业务逻辑的封装。私有也是封装,将一些...

  • 封装微信小程序请求

    封装wx.request 封装api 封装请求调用

  • python 文件及文件夹的操作和异常捕获

    1、面向对象的特征:封装、继承、多态 1.1、封装: 函数一种封装,封装了一些逻辑代码 类也是一种封装,封装属性和...

  • node学习4

    Nodejs 路由模块封装、封装仿照 express 的路由 Nodejs 路由模块封装 封装仿照 express...

  • 封装组件

    封装tab组件封装曝光加载组件封装轮播组件 代码

  • MVVM在网络中应用(OkHttp+Retrofit+Gson+

    1.封装请求地址常量类 2.封装网络工具类 3.封装接口类 4.封装DTO类——即返回的数据封装模型 5.封装请求...

  • view的封装

    封装view较为简单,封装tableview比较麻烦,封装tableview的方法后面会有。 view的封装 如果...

  • 记录封装好的axios

    拦截封装 路由封装

网友评论

      本文标题:13-01-封装

      本文链接:https://www.haomeiwen.com/subject/jszlxltx.html