3.1 类与对象
类是面向对象编程的基本构建块。类定义了对象的属性和行为。对象是类的实例。
示例代码:
csharp
复制
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void Introduce()
{
Console.WriteLine("Hello, my name is " + Name + " and I am " + Age + " years old.");
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "John";
person.Age = 25;
person.Introduce();
}
}
3.2 构造函数与析构函数
构造函数用于初始化对象,而析构函数用于在对象销毁时执行清理操作。
示例代码:
csharp
复制
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
~Person()
{
Console.WriteLine("Person object is being destroyed.");
}
public void Introduce()
{
Console.WriteLine("Hello, my name is " + Name + " and I am " + Age + " years old.");
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person("John", 25);
person.Introduce();
}
}
3.3 继承与多态
继承允许一个类继承另一个类的属性和方法。多态允许子类重写父类的方法。
示例代码:
csharp
复制
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound.");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks.");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal();
Animal myDog = new Dog();
myAnimal.MakeSound();
myDog.MakeSound();
}
}
3.4 接口与抽象类
接口定义了一组方法的契约,而抽象类是不能被实例化的类,通常用于定义基类。
示例代码:
csharp
复制
interface IShape
{
void Draw();
}
abstract class Shape : IShape
{
public abstract void Draw();
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
class Program
{
static void Main(string[] args)
{
Shape shape = new Circle();
shape.Draw();
}
}
3.5 封装与访问修饰符
封装是面向对象编程的一个重要概念,它通过访问修饰符来控制类的成员的可见性。
常见的访问修饰符:
- public:成员可以从任何地方访问。
- private:成员只能在类内部访问。
- protected:成员可以在类内部和派生类中访问。
- internal:成员可以在同一程序集中访问。
示例代码:
csharp
复制
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public void Introduce()
{
Console.WriteLine("Hello, my name is " + name);
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "John";
person.Introduce();
}
}
课后练习题
- 简答题:
- 什么是类和对象?它们之间有什么关系?
- 构造函数和析构函数的作用是什么?
- 什么是多态?如何在 C# 中实现多态?
- 编程题:
- 编写一个 Car 类,包含 Brand 和 Speed 属性,并实现一个 Accelerate 方法,使速度增加。
- 创建一个 Shape 抽象类,并派生出 Circle 和 Rectangle 类,分别实现 Draw 方法。
- 编写一个程序,使用接口 IAnimal 定义 MakeSound 方法,并在 Dog 和 Cat 类中实现该方法。