前言
我们在前面已经了解到我们核心部分最重要的类的概念,并且进行了较为简单的功能撰写,相信你对类肯定有一些印象了,所以今天我们来细讲一些类中的知识点。
希望有助于你更深入了解面向对象编程的设计。
成员变量
在C#中,成员变量是一个类中定义的变量,用于存储对象的属性和状态。它可以在类的任何成员方法内部使用,并且可以在整个类的范围内访问。
它有一些你要遵守的基本规则:
规则
- 申明必须在类语句块中
- 是用来描述对象的特征
- 可以是任意变量类型
- 数量不做限制
- 是否赋值根据需求来定
例子
下面是一个人的类的声明,博主尽量将所有你能想到的数据类型都放进去了,另外提示,数组也是可以存进类中当成员变量的,比如partner,可以不是一个。
csharp
using System;
namespace PersonNamespace
{
// 枚举
enum Gender
{
Male,
Female
}
// 结构体
struct Address
{
public string Street;
public string City;
}
// 其他类
class Job
{
public string Title;
public int Salary;
}
// 人的类
class Person
{
// 成员变量
private string name;
private int age;
private Gender gender;
private Address address;
private Job job;
private Person partner;//默认为空,如果要在类中声明一个和自己相同类型的成员变量时,不能初始化
// 构造函数
public Person(string name, int age, Gender gender, Address address, Job job)
{
this.name = name;
this.age = age;
this.gender = gender;
this.address = address;
this.job = job;
}
// 其他方法
public void DisplayInformation()
{
Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
Console.WriteLine("Gender: " + gender);
Console.WriteLine("Address: " + address.Street + ", " + address.City);
Console.WriteLine("Job: " + job.Title + ", Salary: " + job.Salary);
}
// 附加的方法
public void SetPartner(Person partner)
{
this.partner = partner;
}
}
class Program
{
static void Main(string[] args)
{
// 创建一个人的实例
Address address = new Address() { Street = "123 Main St", City = "New York" };
Job job = new Job() { Title = "Software Engineer", Salary = 5000 };
Person person = new Person("John", 30, Gender.Male, address, job);
// 显示信息
person.DisplayInformation();
// 创建另一个人的实例
Address address2 = new Address() { Street = "456 First St", City = "Los Angeles" };
Job job2 = new Job() { Title = "Teacher", Salary = 3000 };
Person person2 = new Person("Jane", 28, Gender.Female, address2, job2);
// 设置伴侣
person.SetPartner(person2);
// 显示信息
person2.DisplayInformation();
Console.ReadLine();
}
}
}
访问修饰符
C#是一种面向对象的编程语言,其中访问修饰符用于控制类、接口、字段、属性和方法的访问级别。访问修饰符决定了在不同的上下文中可以访问和使用这些成员。
设置访问修饰符的意义在于控制成员的可访问性,通过限制成员的访问范围,可以增强代码的安全性和可维护性。以下是一些常见的用途:
-
封装:使用private访问修饰符可以隐藏类的内部实现细节,只对外暴露必要的接口。这样可以隐藏实现细节,保护数据的完整性和安全性。
-
继承:使用protected访问修饰符可以使派生类能够访问基类的受保护成员,从而实现继承和重用。
-
模块化开发:使用internal访问修饰符可以将相关的成员限制在同一程序集内,实现模块化和代码重用。
-
API设计:使用public访问修饰符可以定义公共接口,方便其他开发人员使用和扩展。
总的来说,访问修饰符其实就是控制你的类中的成员变量的使用权限,具体如下:
- public------公共的 自己(类的内部)和别人(外部)都能访问和使用
- private------私有的 只有自己能访问和使用,其中,如果你没有给成员变量访问修饰符,默认为private。
- protected------保护的 自己和子类(新概念,后续文章才讲解,这里你记住就行)才能访问和使用
我们将Person类简化,有以下属性和方法:
csharp
public class Person
{
public string Name; // 公有字段
private int Age; // 私有字段
public void DisplayInfo()
{
Console.WriteLine($"Name: {Name}, Age: {Age}");
}
private void IncreaseAge()
{
Age++;
}
}
在这个例子中,我们使用了两种访问修饰符:公有(public)和私有(private),因为保护(protected)需要子类才能展示,这个就请读者自行下去进行尝试了。
对于属性和方法来说,公有访问修饰符允许从类的外部访问。在Person类中,Name属性和DisplayInfo方法都有公有访问修饰符。这意味着我们可以在类的外部通过创建Person对象来访问和修改Name属性,并调用DisplayInfo方法。
csharp
Person person = new Person();
person.Name = "John";
person.DisplayInfo(); // 输出:Name: John, Age: 0
私有访问修饰符限制了只有在类的内部才能访问。在Person类中,Age字段和IncreaseAge方法都有私有访问修饰符。这意味着我们无法在类的外部直接访问和修改Age字段,也无法调用IncreaseAge方法。
csharp
Person person = new Person();
person.Age = 30; // 编译错误:'Person.Age' is inaccessible due to its protection level
person.IncreaseAge(); // 编译错误:'Person.IncreaseAge' is inaccessible due to its protection level
在未来的游戏开发中,其实有些变量我们是不希望被拿来到处改来改去的(会引起变量引用混乱),所以我们有时候就要通过这些访问修饰符加以修饰控制。
这也是我们在写代码中需要协作的规范,这个需要你和伙伴们进行更多的商量。
成员变量的使用和初始值
初始值
- 值类型:数字类型默认0,bool类型默认false(0)
- 引用类型:null
介绍一种看默认值的方法:
cs
Console.Writeline(default(int);
在上诉例子中,你也可以看到,其实类中的成员变量的使用和结构体类似,这里就不做过多的讲解了。
总结
至此,我们就学完了关于c#成员变量和访问修饰符相关的知识点,希望你能感受其中设计的美感,然后继续努力踏实学习。
请期待我的下一篇博客!