码迷,mamicode.com
首页 > Windows程序 > 详细

23. C# -- 封装

时间:2015-05-18 21:01:07      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:c#

什么是封装?

封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 

使用封装的意义?

封装的意义在于保护或者防止代码(数据)被我们无意中破坏。

封装提供了一个有效的途径来保护数据不被意外的破坏。

 

下面我们看一些c#例子来学习这两种方法用以封装数据。第一种方法,我们使用传统的存、取方法。第二种方法我们用属性property)。无论我们使用哪种的方法,我们的目标是在使用数据的同时不能使它受到任何的破坏和改变。有如下好处:

其一: 使用者只需要了解如何通过类的接口使用类,而不用关心类的内部数据结构和数据组织方法。

其二:高内聚,低耦合一直是我们所追求的,用好封装恰恰可以减少耦合

其三:只要对外接口不改变,可以任意修改内部实现,这个可以很好的应对变化

其四:类具有了简洁清晰的对外接口,降低了使用者的学习过程

 

实例一:用传统的读、写方法封装

让我们来看一个例子有一个类Department,为了操纵这个类中的数据(stringdepartname)我们定义了一个读方法和一个写方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    //定义类
    class Department
{
        private string departname;
        public string GetDepartname()
{
            return departname;
}
        public void SetDepartname(string a)
{
departname = a;
}
}
   //客户端实现,使用两个不同方法来写和读数据
     public class TestAnimal
{
         static void Main()
{
             Department d = new Department();
             d.SetDepartname("ELECTRONICS");
             Console.WriteLine("The departname is : " +d.GetDepartname());
             Console.ReadLine();
}
}
}

结果:

The departname is ELECTRONICS

 

实例二:属性

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    //定义类
    class Department
{
        private string departname;
        public string Departname
{
            get { return departname; }
            set { departname = value; }
}
}
   //客户端实现,使用两个不同方法来写和读数据
     public class TestAnimal
{
         static void Main()
{
             Department d = new Department();
             d.Departname = "Communication";
             Console.WriteLine("The departname is :{0} ", d.Departname);
             Console.ReadLine();
}
}
}

通过上面的例子,我们可以看到如何通过属性来实现封装。属性具有两种操作getsetGet用来返回属性域的值。Set通过value这个变量来给属性域赋值。属性可以设为只读的(read-only)。这只需属性只具有一个set操作

结果:

The departname is :Communication

 

参考:

http://blog.csdn.net/acmilanvanbasten/article/details/8625097


本文出自 “Ricky's Blog” 博客,请务必保留此出处http://57388.blog.51cto.com/47388/1652438

23. C# -- 封装

标签:c#

原文地址:http://57388.blog.51cto.com/47388/1652438

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!