1. 继承的概念
继承是面向对象编程的一种机制,允许一个类从另一个类获取属性和方法,从而实现代码复用和层次化结构。
- 继承的基本概念
- 基类(父类或超类):提供属性和方法的类。
- 派生类(子类):从基类继承的类,能够添加新的属性和方法或重写基类的方法。
2. 基类与派生类
-
基类的定义
public class Animal { public string Name { get; set; } public void Eat() { Console.WriteLine($"{Name} is eating."); } }
-
派生类的定义
public class Dog : Animal { public void Bark() { Console.WriteLine($"{Name} is barking."); } }
-
使用派生类
Dog myDog = new Dog(); myDog.Name = "Buddy"; myDog.Eat(); // 输出:Buddy is eating. myDog.Bark(); // 输出:Buddy is barking.
在这个例子中,Dog
类继承了 Animal
类的属性 Name
和方法 Eat
,并且添加了新的方法 Bark
。
3. 方法重写(override)
方法重写允许派生类提供基类方法的具体实现。使用 override
关键字重写基类方法。
-
基类中的虚方法
public class Animal { public string Name { get; set; } public virtual void MakeSound() { Console.WriteLine("Animal makes a sound."); } }
-
派生类中重写方法
public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Dog barks."); } }
-
使用重写方法
Dog myDog = new Dog(); myDog.Name = "Buddy"; myDog.MakeSound(); // 输出:Dog barks.
在这个例子中,Dog
类重写了 Animal
类中的 MakeSound
方法。
4. 多态与虚方法(virtual)
多态性是面向对象编程的重要特性,允许在不同类中定义相同的方法并以不同的方式实现。多态性通过基类引用指向派生类对象,并调用重写的方法。
-
使用虚方法
public class Animal { public string Name { get; set; } public virtual void MakeSound() { Console.WriteLine("Animal makes a sound."); } } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Dog barks."); } } public class Cat : Animal { public override void MakeSound() { Console.WriteLine("Cat meows."); } }
-
实现多态性
Animal myAnimal; myAnimal = new Dog(); myAnimal.MakeSound(); // 输出:Dog barks. myAnimal = new Cat(); myAnimal.MakeSound(); // 输出:Cat meows.
通过将基类引用(Animal myAnimal
)指向不同的派生类对象(Dog
和 Cat
),调用 MakeSound
方法时表现出不同的行为。