11.1 C# 类面向对象编程 封装性 学习笔记
程序员文章站
2022-07-16 09:13:37
...
1、封装概念
封装: 包起外界不必要知道的东西,只向外界展露可公示的东西。
在C#中,类的封装: 将类中的私有字段封装成为公有属性。
公有属性就是public的get和set方法。
封装优点:
- 良好封装能减少耦合(比如实现界面类和逻辑类的分离)。
- 类对外方法不变情况下,方法内部可以实现*修改
- 类具有稳定而标记清晰的对外方法,使用者只需调用,无须关心方法内部实现。
- 因为封装的类功能相对独立,因此能更好地实现代码复用。
- 可保护代码不被其他人无意中调用破坏,通过私有访问权限等实现保护。这里的代码保护不是指代码本身的加密,而是指对不想被外部更改的字段,使用私有访问来修饰
//枚举
enum Color{
White,Blac,Yellow,Red,Other
}
class Cat{
//类的成员默认是私有变量
//字段:
string catName;
//动态常量字段是要分配内存空间,而静态就不需要。下面是动态常量
readonly Color catColor = Color.Yellow; //C#枚举的调用赋值
readonly double catPrice = 800.00;
int shoutNumber; //叫的次数
///<summary>
///构造函数
///</summary>
///<param name="catName"></param>
public Cat(string catName)
{
CatName = catName;
}
//属性:
public string CatName{
get{return catName;}
set{catName = value;}
}
public Color CatColor{
get{return catColor;}
}
public doubleCatPrice{
get{return catPrice;}
}
public int ShoutNumber{
set{shoutNumber = value;}
get{return shourNumber;}
}
//猫叫的方法
public void Shout(){
int i = 0;
string ShoutNum = "";
do{
ShoutNum+="喵";
i++
}while(i<=ShoutNumber);
}
}
static void Main(string[] arg)
{
Cat cat = new Cat("大白");
cat.ShoutNumber = 5;
cat.Shout();
}
2、字段 和 属性 的区别
- 字段其实是类的某一成员值。 string dogName = “小明”;
- 属性实质是方法(get和set方法)。
- 将字段的访问权限设置为public,就成了公有变量,其实公有字段与属性是不一样。
- 属性是对字段的封装,它使用get和set访问器来控制如何设置或返回字段值。 赋值和取值速度上:公共字段比使用属性速度要快,性能也好。
- 公共字段是public的缺点,对象的调用者就可以随便直接修改公有字段,值的内容是否合法,运行中是否会出现连带错误,是没有任何保障的。大大降低类的可重用性。
- 属性的优点:属性类似方法,在它里面,可以自行写代码对存入的变量的值进行特别处理。例如:遇到值不合法,可以在方法中写逻辑让变换成其他值或直接弹出警告窗口。这对该类的对象使用安全有很大的好处,在运行过程中,因公共字段值的错误而产生问题会大大减少。
在实际开发过程中,尽量使用属性,把所有字段设置成私有字段,如果外界要用到他们,则就把他们封装成属性,这样可以保证数据安全。
如果外界修改字段,会导致对象内部引起连带的其他状态改变,那么建议使用属性封装字段。
如果字段的变动不会引发对象内部的连带问题,是可以使用public,但通常还是只用属性来封装字段。
推荐阅读
-
【JAVA面向对象编程机制——封装性】 2 Java访问权限限制(Java包 、Java类的访问权限 )
-
11.1 C# 类面向对象编程 封装性 学习笔记
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用_php基础
-
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程_php实例
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用_php基础
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用_php入门_
-
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程_PHP教程
-
photoshop学习心得 php学习笔记 php中面向对象三大特性之一[封装性]的应用
-
【JAVA面向对象编程机制——封装性】 2 Java访问权限限制(Java包 、Java类的访问权限 )