类和对象的概念
- 类(Class)是一个用来描述具有相似特征的对象的蓝图或模板。它定义了对象的属性(成员变量)和行为(成员函数),还可以包含构造函数和析构函数等。
- 对象(Object)是类的实例化,即创建了一个类的具体实例,具有该类所描述的属性和行为。
- 在 C# 中,类和对象是面向对象编程中的重要概念。
- 类定义了对象的属性和行为,而对象是类的实例化。
- 使用类可以通过实例化类来创建对象,并使用对象调用类的成员变量和成员函数。
- 类可以继承自其他类,从而实现类的重用和代码的组织。
类
一个类由以下部分组成:
- 类的名称:类名应该反映出它所描述的对象的特征和行为。
- 成员变量(属性):类的属性定义了它所描述的对象的特征。它们是类的数据成员,存储对象的状态。属性可以是值类型(如整数、浮点数等)或引用类型(如字符串、数组等)。
- 成员函数(方法):类的方法定义了它所描述的对象的行为。方法可以是实例方法或静态方法,实例方法作用于特定对象,静态方法是类的方法,它不依赖于特定对象。
- 构造函数:构造函数是一个特殊的方法,用于初始化类的新实例。它的名称与类的名称相同,没有返回类型,并且可以有多个不同的重载形式。
- 析构函数:析构函数是一个特殊的方法,用于在对象被销毁之前执行清理工作。
public class Person
{
// 成员变量
public string name;
public int age;
// 构造函数
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
// 成员方法
public void SayHello()
{
Console.WriteLine($"Hello, my name is {this.name}, and I am {this.age} years old.");
}
}对象
对象是类的实例化。实例化是使用 new 运算符创建一个对象,并将其分配给一个变量。在创建对象时,必须调用该类的构造函数。构造函数用于初始化对象的成员变量。
以下是一个创建 Person 类对象的示例:
Person person = new Person("Tom", 30);上面的代码创建了一个名为 person 的 Person 对象,其名称为“Tom”,年龄为 30 岁。
一旦创建了一个对象,就可以通过使用点运算符访问它的属性和方法。
person.SayHello();
Console.WriteLine($"My name is {person.name}, and I am {person.age} years old.");上面的代码调用了 person 对象的 SayHello() 方法,并使用 Console.WriteLine() 方法打印出了 person 对象的名称和年龄。
继承
继承是一种机制,它允许子类(派生类)从父类(基类)继承属性和行为,并在此基础上添加或修改其自己的特性。派生类可以访问基类的公共和受保护的成员变量和成员函数,并可以使用它们来定义自己的成员变量和成员函数。
以下是一个继承自 Person 类的 Employee 类的示例:
public class Employee : Person
{
public int employeeId;
public float salary;
public Employee(string name, int age, int employeeId, float salary) : base(name, age)
{
this.employeeId = employeeId;
this.salary = salary;
}
public void ShowEmployeeDetails()
{
Console.WriteLine($"Name: {name}, Age: {age}, Employee Id: {employeeId}, Salary: {salary}");
}
}在上面的代码中,Employee 类继承自 Person 类,并添加了 employeeId 和 salary 两个成员变量,以及 ShowEmployeeDetails() 来显示雇员的详细信息。构造函数调用了父类的构造函数来初始化从父类继承的成员变量。
使用 Employee 类的示例:
Employee employee = new Employee("Alice", 25, 1234, 50000);
employee.SayHello();
employee.ShowEmployeeDetails();上面的代码创建了一个名为 employee 的 Employee 对象,并设置了名称、年龄、雇员 ID 和薪水。然后,它调用了从 Person 类继承的 SayHello() 方法和 Employee 类的 ShowEmployeeDetails() 方法。
输出结果如下:
Hello, my name is Alice, and I am 25 years old.
Name: Alice, Age: 25, Employee Id: 1234, Salary: 50000总结
在 C# 中,继承是实现代码重用和组织的重要机制。通过继承,子类可以从父类继承属性和行为,并添加或修改其自己的特性。C#中的继承是单继承的,即每个类只能直接继承自一个基类。
实际应用
在学校里,学生是一个类,而每个具体的学生就是对象。
- 学生是一个模板,描述了一个学生应该具有的属性和行为。
- 而每个具体的学生,如小明、小红等,就是类的实例,也就是对象。
假设我们要创建一个学生类(Student class),这个类将拥有以下属性和行为:
- 属性:
- 姓名(name)
- 年龄(age)
- 学号(id)
- 性别(gender)
- 行为:
- 学习(study)
- 休息(rest)
假设我们要创建一个名为小明(Ming)的学生对象,可以通过以下方式实现:
// 创建一个名为 Student 的类
public class Student
{
public string name;
public int age;
public string id;
public string gender;
// 学生类的构造函数
public Student(string name, int age, string id, string gender)
{
this.name = name;
this.age = age;
this.id = id;
this.gender = gender;
}
// 学习方法
public void Study()
{
Console.WriteLine($"{name} is studying now.");
}
// 休息方法
public void Rest()
{
Console.WriteLine($"{name} is taking a rest now.");
}
}
// 创建一个名为小明的 Student 对象
Student ming = new Student("Ming", 18, "20181001", "male");在上面的代码中:
- 我们首先创建了一个名为 Student 的类,该类拥有:
- 四个属性:姓名 name、年龄 age、学号 id 和性别 gender
- 两个行为:学习方法 Study() 和休息方法 Rest()。
- 然后我们创建了一个名为 ming 的 Student 对象,该对象的
- 属性值分别为 姓名(Ming)、年龄(18)、学号(20181001)和性别(male)
用类的方法和属性来模拟小明的行为,比如:
ming.Study();
ming.Rest();
Console.WriteLine($"Name: {ming.name}, Age: {ming.age}, Id: {ming.id}, Gender: {ming.gender}");
// Ming is studying now.
// Ming is taking a rest now.
// Name: Ming, Age: 18, Id: 20181001, Gender: male通过调用 ming 对象的 Study() 和 Rest() 方法,我们模拟了小明正在学习和休息的行为。另外,我们还可以通过 ming 对象的属性来获取小明的信息。
这个例子中,学生类就是一个抽象的概念,而小明、小红等具体的学生则是类的实例,也就是对象。类定义了对象的属性和行为,而对象则具体实现了这些属性和行为。