using System;
namespace lesson5_成员属性
{
#region 知识回顾
#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 string Name
{
get
{
//为成员属性的获取和赋值添加逻辑处理
//意味着 这个属性可以获取的内容
return name;
}
set
{
//为成员属性的获取和赋值添加逻辑处理
//value 关键字 用于表示 外部传入的值
name = value;
}
}
#region 成员属性中 get和set前可以加访问修饰符
//注意
//1.默认不加 会使用属性申明时的访问权限
//2.加的访问修饰符要低于属性的访问权限
//3.不能让get和set的访问权限都低于属性的权限
#endregion
public int Money
{
get
{
//解密处理
return money - 5;
}
set
{
//加密处理
money = value + 5;
}
}
/*public int Money
{
get
{
return money;
}
set
{
if (value < 0)
{
value = 0;
Console.WriteLine("钱不能少于0,强制设置为0了");
}
money = value;
}
}*/
#region 成员属性中 get和set前可以加访问修饰符
//注意
//1.默认不加 会使用属性申明时的访问权限
//2.加的访问修饰符要低于属性的访问权限
//3.不能让get和set的访问权限都低于属性的权限
#endregion
#region get和set可以只有一个
//注意
//只有一个时 没必要在前面加访问修饰符
//一般情况下 只会出现 只有get的情况 基本不会出现只有set
public bool Sex
{
get
{
return sex;
}
/*set
{
sex = value;
}*/
}
#endregion
#region 自动属性
//作用:外部能得不能改的特征
//如果类中有一个特征是只希望外部能得到不能改的 又没什么特殊处理
//那么可以直接使用特殊属性
public float Height
{
//没有在get和set中写逻辑的需求或想法
get;
set;
}
#endregion
}
#endregion
class Program
{
static void Main(string[] args)
{
Console.WriteLine("成员属性");
#region 成员属性的使用
Person p = new Person();
p.Name = "于双";
Console.WriteLine(p.Name);
p.Money = 1000;
Console.WriteLine(p.Money);
//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,一般用于 外部能不能改的这种情况
}