Csharp类的定义和使用
类的定义
在 C# 中,类是一种用户定义的数据类型,它是面向对象编程的基本构建块。类用于封装数据(通过字段)和行为(通过方法)。定义一个类的基本语法如下:
1 | class ClassName |
例如,定义一个简单的Person类:
1 | class Person |
类的成员
字段
字段是类中的变量,用于存储数据。它们可以有不同的访问修饰符,如public、private、protected等。public字段可以从类的外部访问,而private字段只能在类的内部访问。例如,在上面的Person类中,Name是一个public字段。
方法
方法是类中的函数,用于定义类的行为。方法可以接受参数并返回一个值。例如,Person类中的SayHello方法没有参数,并且返回类型为void(即不返回任何值)。如果一个方法要返回一个值,需要在方法声明中指定返回类型。
例如:
1 | class Calculator |
属性
属性提供了一种灵活的方式来访问和修改类中的数据。属性在形式上类似于字段,但实际上它们包含了get(用于获取值)和set(用于设置值)访问器。例如,我们可以为Person类的Name字段添加属性:
1 | class Person |
这样,我们可以通过属性来访问和修改_name字段,并且可以在get和set访问器中添加额外的逻辑,如数据验证。
构造函数
构造函数是一种特殊的方法,用于在创建类的对象时初始化对象的状态。构造函数的名称与类名相同,并且没有返回类型(甚至不能是void)。例如:
1 | class Person |
现在,当我们创建一个Person对象时,必须提供姓名和年龄:
1 | Person p = new Person("John", 30); |
访问修饰符
public:公开的,类的外部可以访问。例如,public方法和字段可以在其他类中通过对象实例来访问。
private:私有的,只能在类的内部访问。通常用于封装类的内部实现细节,防止外部代码的非法访问。
protected:受保护的,只能在类的内部以及该类的派生类中访问。用于在继承关系中控制成员的访问权限。
internal:内部的,在同一个程序集(Assembly)内可以访问。这对于组织代码和限制访问范围很有用。
继承
C# 支持类的继承,它允许一个类(派生类或子类)继承另一个类(基类或父类)的成员。继承的语法如下:
1 | class DerivedClass : BaseClass |
例如,定义一个Student类继承自Person类:
1 | class Student : Person |
在这里,Student类继承了Person类的Name和Age字段以及相关方法。并且Student类有自己的字段School。构造函数中的base(name, age)用于调用基类Person的构造函数来初始化继承的成员。
多态性
多态性是面向对象编程的重要概念,C# 通过方法重写(Override)来实现多态。在基类中定义一个虚方法(使用virtual关键字),然后在派生类中重写该方法(使用override关键字)。例如:
1 | class Shape |
当我们有一个Shape类型的数组,其中包含不同的形状(如Circle)对象时,通过调用Area方法,会根据对象的实际类型(多态)来执行正确的Area计算方法。
车辆类与向量类的定义和使用
车辆类(Vehicle Class)
定义和基本属性
首先,车辆类可以包含车辆的基本属性,如品牌(brand)、型号(model)、颜色(color)、速度(speed)等。在 C# 中,可以这样定义车辆类:
1 | class Vehicle |
这里,Brand、Model和Color是公共属性,可以直接读写。Speed属性是通过一个私有字段speed来实现的,并且在设置速度时进行了简单的验证,确保速度不小于 0。
方法
车辆类可以有一些方法,比如加速(Accelerate)和减速(Decelerate)方法。
1 | class Vehicle |
这些方法可以改变车辆的速度属性。Accelerate方法将速度增加指定的增量,Decelerate方法将速度减少指定的减量,并确保速度不会小于 0。
向量类(Vector Class)
定义和基本操作
在数学和编程中,向量是一个很重要的概念。在 C# 中,可以定义一个二维向量类,包含 x 和 y 两个分量。
1 | class Vector |
这是一个简单的向量类定义,有两个公共属性X和Y来表示向量的两个分量,并且通过构造函数来初始化这两个分量。
向量运算方法
向量类可以有一些方法来进行向量运算,比如向量加法和减法。
1 | class Vector |
Add方法用于将当前向量和另一个向量相加,返回一个新的向量。Subtract方法用于将当前向量减去另一个向量,也返回一个新的向量。