166 lines
4.9 KiB
C#
166 lines
4.9 KiB
C#
|
|
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,一般用于 外部能得不饿能改这种情况
|
||
|
|
}
|