访问修饰符
- 访问修饰符(权限修饰符)
- 目前我们的类中只有字段,通过这个类实例化出来的对象,是可以直接访问到相应字段的,因为字段的访问权限是 public。
- public 与 private
- public:公开的。通过对象名.xxx的形式可以直接访问到。
- private:私有的。通过上述形式访问不到。
- 练习:定义一个 Person 类,描述人的基本信息。字段包含:姓名,年龄,性别。对字段数据的恶意赋值。
// Person.cs中编辑代码. namespace _01 { public enum Gender { Boy, Girl } class Person { public Gender gender; public string name; private int age; } } //Program.cs中编辑代码. Person p1 = new Person(); p1.name = "Shane"; p1.gender = Gender.Girl; p1.age = 1; //恶意赋值:可以随便修改数据,可能不合理,如年龄1800岁。 Console.WriteLine("p1对象的姓名是{0},性别是{1},年龄是{2}.", p1.name, p1.gender, p1.age); Console.ReadKey();
属性
- 属性
- 字段是对象的核心数据,如果直接 public 公开容易被恶意赋值。所以字段通常使用 private 修饰,这样通过对象名.xxx的形式访问不到。
- 但是我们需要通过对象名.xxx的形式对字段存储的数据进行操作,于是出现了属性。
- 属性的作用是对字段进行保护。将属性设为 public,可以直接访问。属性保护的字段设置成 private,我们通过属性间接操作字段。
- 属性的语法
public 数据类型 属性名 { get{return 字段名;} set{字段名 = value;} }
- 数据类型:要和保护的字段的数据类型一致。
- 属性名:和字段名一样,但首字母大写。
- get:通过属性名取值时,会自动调用 get 中的代码。(本质是函数)
- set:通过属性名给字段赋值时,会自动调用 set 中的代码。(本质是函数)
- value:系统关键字,代表赋给属性的值。
- 练习:
- 1.使用属性保护字段。
namespace _01 { public enum Gender { Boy, Girl } class Person { public Gender gender; public string name; private int age; public int Age { get { return age;} set { age = value;} } } } Person p1 = new Person(); p1.name = "Shane"; p1.gender = Gender.Girl; p1.Age = 999; Console.WriteLine("p1对象的姓名是{0},性别是{1},年龄是{2}.", p1.name, p1.gender, p1.Age); //p1对象的姓名是Shane,性别是Girl,年龄是999. Console.ReadKey();
- 2.使用属性对字段的赋值进行合法性校验。
namespace _01 { public enum Gender { Boy, Girl } class Person { public Gender gender; public string name; private int age; public int Age { get { return age;} set { if(value > 120 || value < 0) { age = 1; } else { age = value; } } } } } Person p1 = new Person(); p1.name = "Shane"; p1.gender = Gender.Girl; p1.Age = 999; Console.WriteLine("p1对象的姓名是{0},性别是{1},年龄是{2}.", p1.name, p1.gender, p1.Age); //p1对象的姓名是Shane,性别是Girl,年龄是1. Console.ReadKey();
- 1.使用属性保护字段。
命名空间
- 命名空间
- 又叫名称空间,namespace.
- 作用
- 对代码文件进行分类管理
- 命名空间的语法
- 定义命名空间:namespace 空间名称{ 类 }
- 引入命名空间:using 空间名称