namespace Lesson5 { #region 知识回顾 //class Person //{ // //特征——成员变量 // private int age; // private string name; // //金钱 // private int money; // //行为——成员方法 // public void Speak() // { // } // //初始化调用——构造函数 // public Person(int age) { } // public Person(int age, string name) { } // //释放时调用——析构函数 // ~Person() { } //} #endregion #region 知识点一 成员属性的基本概念 //基本概念 //1.用于保护乘员变量 //2.称为成员属性获取和赋值添加逻辑处理 //3.解决3p的局限性 // public_内外访问 // private_内外访问 // protected_内部和子类访问 // 属性可以让成员变量在外部 // 只能获取 不能修改 或者 只能修改 不能获取 #endregion #region 知识点二 成员属性的基本语法 // 访问修饰符 属性类型 属性名 // { // get{} // set{} // } class Person { private string name; private int age; private int money; private bool sex; public Person() { sex = true; } //属性一般用帕斯卡命名法 public string Name { get//必须要有一个返回值 { //可以在返回之前添加一些逻辑规则 //意味着 这个属性可以获取的内容 return name; } set { //可以在设置之前添加一些逻辑 // value关键字 用于 表示外部传入的值 name = value; } } //public int Money //{ // get // { // return Value + 5;//通过加减来对数据进行加密 // } // set // { // money = value - 5; // } //} public void TrueGetMoney() { Console.WriteLine(money); } #endregion #region 知识点四 成员属性中 get和set钱可以加访问修饰符 // 注意 // 1.默认不加 会使用属性声明时的访问权限 // 2.记得访问修饰符要地狱属性的访问权限 // 3.不能让get和set的访问权限都低于属性的权限 public int Money { get { return 0; } set { if (value < 0) { Console.WriteLine("钱不能少于0,被设为0"); value = 0; } money = value; } } #endregion #region 知识点五 get和set可以只有一个 public bool Sex { get { return sex;//可以得不能改 } } #endregion #region 知识点六 自动属性 //作用:外部能得不能改的特征 //如果类中有一个特征时希望外部能得到不能改 又没什么特殊处理 //那么可以直接使用自动属性 public float Height//没有height成员变量,但是用Height属性来代替了成员变量( //自动生成一个地址来存放成员变量,我们也不知道成员变量名是什么,反正用这个属性包裹起来了 //作用是 //可以在get和set前设置访问修饰符,直接修改 设置和访问成员变量 的权限不用再去声明一个变量在写多几行代码 //但是get和set中没法对数据进行处理(加密等) { get; set; } #endregion } class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); #region 知识点三 成员属性的使用 Person p = new Person(); p.Name = "Test"; Console.WriteLine(p.Name); p.Money = 100; Console.WriteLine(p.Money); p.TrueGetMoney(); p.Money = -100; p.TrueGetMoney(); Console.WriteLine(p.Sex);//只能得,不能p.Sex = False来改 #endregion } } //总结 //1.成员属性概念:一般是用来保护成员变量的 //2.成员属性的使用和变量一样 外部用对象点出 //3.get中需要return内容;set中用value表示传入的内容 //4.get和set语句块中可以加逻辑处理 //5.get和set可以加访问修饰符,但是要按照一定的规则进行添加 //6.get和set可以只有一个 //7.自动属性是属性语句块中只有get和set,一般用于 外部能得不饿能改这种情况 }