成员属性
一.成员属性的基本概念
基本概念:
1.用于保护成员变量
2.为成员属性的获取和赋值添加逻辑处理
3.解决3P的局限性
public ——内外访问
private ——内部访问
protected ——内部和子类访问
(访问:修改或者获取它)
属性可以让成员变量在外部实现只能获取不能修改,或者只能修改不能获取
二.成员属性的基本语法
访问修饰符 属性类型 属性名
{
get{}
set{}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class Person{ private string name; private int age; private int money; private bool sex; public string Name{ get{ return name; } set{ name =value; } } }
|
三.成员属性的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| namespace 语法知识 { class Person{ private string name; private int age; private int money; private bool sex; public string Name{ get{ return name; } set{ name =value; } } public int Money{ get{ return money-5; } set{ if(value<0){ value=0; Console.WriteLine("钱不能少于0,强制设置为0"); } money=value-5; } } } internal class Program { static void Main(string[] args) { Person p =new Person(); p.Name="大帅哥"; Console.WriteLine(p.Name); p.Money=1000; Console.WriteLine(p.Money); } } } ```
|
四.成员属性中,get和set前面可以加访问修饰符
注意:
1.默认不加,会使用属性申明时的访问权限
2.加的访问修饰符要低于属性的访问权限
3.不能让get和set的访问权限都低于属性的权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Person{ private int money; public int Money{ private get{ return money-5; } set{ if(value<0){ value=0; Console.WriteLine("钱不能少于0,强制设置为0"); } money=value-5; } }
|
五.get和set可以只有一个
注意:
只有一个时,没有必要在前面加上访问修饰符
一般情况下,只会出现只有get的情况,基本不会出现只有set的情况。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Person{ private bool sex; { get{ return sex; } } }
Person p=new Person(); Console.WriteLine(p.Sex); P.Sex=false;
|
六.自动属性
作用:外部能得不能改的特征。
如果类中有一个特质是只希望外部能得不能改,又没什么特殊处理(没有在get和set中写逻辑的需求和想法),那么可以直接使用自动属性。
1 2 3 4 5 6 7 8 9 10
| class Person{ public float Height{ get; private set; } }
|