2026-06-21 09:51:55 +08:00
|
|
|
# 成员变量和访问修饰符
|
2026-04-13 15:40:15 +08:00
|
|
|
概念:
|
2026-06-21 09:51:55 +08:00
|
|
|
1. 成员变量也常叫==字段(field)==
|
|
|
|
|
2. 它声明在类或结构体中,用来描述对象状态
|
|
|
|
|
3. 字段类型可以是任意合法类型
|
|
|
|
|
4. 字段如果没手动赋值,会先使用该类型的默认值
|
2026-04-13 15:40:15 +08:00
|
|
|
|
|
|
|
|
通常用法:
|
2026-06-21 09:51:55 +08:00
|
|
|
- 保存对象的基础数据
|
|
|
|
|
- 配合访问修饰符控制谁能访问
|
|
|
|
|
- 再配合[[成员属性]]对外暴露更安全的访问方式
|
2026-04-13 15:40:15 +08:00
|
|
|
|
|
|
|
|
语法:
|
2026-06-21 09:51:55 +08:00
|
|
|
```csharp
|
|
|
|
|
class Human
|
|
|
|
|
{
|
|
|
|
|
public string name;
|
|
|
|
|
private int age;
|
|
|
|
|
protected bool isAlive;
|
|
|
|
|
internal Human[] friends;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
访问修饰符:
|
|
|
|
|
1. `public`
|
|
|
|
|
类内部和外部都能访问
|
|
|
|
|
2. `private`
|
|
|
|
|
只有当前类型内部能访问
|
|
|
|
|
3. `protected`
|
|
|
|
|
当前类型和子类能访问
|
|
|
|
|
4. `internal`
|
|
|
|
|
同一个程序集内能访问
|
|
|
|
|
|
|
|
|
|
案例:
|
|
|
|
|
```csharp
|
|
|
|
|
class Human
|
|
|
|
|
{
|
|
|
|
|
public string name;
|
|
|
|
|
private int age;
|
|
|
|
|
|
|
|
|
|
public void SetAge(int value)
|
2026-04-13 15:40:15 +08:00
|
|
|
{
|
2026-06-21 09:51:55 +08:00
|
|
|
age = value;
|
2026-04-13 15:40:15 +08:00
|
|
|
}
|
2026-06-21 09:51:55 +08:00
|
|
|
|
|
|
|
|
public void PrintInfo()
|
2026-04-13 15:40:15 +08:00
|
|
|
{
|
2026-06-21 09:51:55 +08:00
|
|
|
Console.WriteLine($"{name} - {age}");
|
2026-04-13 15:40:15 +08:00
|
|
|
}
|
2026-06-21 09:51:55 +08:00
|
|
|
}
|
2026-04-13 15:40:15 +08:00
|
|
|
|
2026-06-21 09:51:55 +08:00
|
|
|
Human h1 = new Human();
|
|
|
|
|
h1.name = "小明";
|
|
|
|
|
// h1.age = 18; // 报错,外部不能直接访问 private 字段
|
|
|
|
|
h1.SetAge(18);
|
|
|
|
|
h1.PrintInfo();
|
2026-04-13 15:40:15 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
注意:
|
2026-06-21 09:51:55 +08:00
|
|
|
1. ==类中的字段如果不写访问修饰符,默认是 `private`==
|
|
|
|
|
2. 字段可以声明成当前类型本身,比如 `Human[] friends`
|
|
|
|
|
3. 默认值示例:
|
|
|
|
|
- `int` 是 `0`
|
|
|
|
|
- `bool` 是 `false`
|
|
|
|
|
- 引用类型是 `null`
|
|
|
|
|
4. 实际开发中,很多字段会写成 `private`,再通过[[成员属性]]控制访问
|
2026-06-18 20:01:30 +08:00
|
|
|
|
|
|
|
|
#封装
|
|
|
|
|
#核心
|