Synchronization of old projects
Part1
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>Lesson5_封装_成员属性</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,165 @@
|
||||
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,一般用于 外部能得不饿能改这种情况
|
||||
}
|
||||
Reference in New Issue
Block a user