C#继承详解:从基础到高级

7 下载量 33 浏览量 更新于2024-07-15 收藏 159KB PDF 举报
子数是{0},重量是{1}kg", wheels, weight); } } classCar:Vehicle//定义汽车类,从交通工具类派生 { publicCar(intw, floatg):base(w, g){}//调用基类构造函数 publicvoidHonk(){ Console.WriteLine("汽车在按喇叭!"); } } classProgram { staticvoidMain(string[] args) { Car myCar = new Car(4, 1500); myCar.Speak(); myCar.Honk(); } } 在上面的代码中,`Car`类从`Vehicle`类派生,继承了`Vehicle`类的`wheels`和`weight`成员,以及`Speak()`方法。虽然`wheels`和`weight`是受保护的,但在派生类中仍然可以访问。`Car`类还添加了新的方法`Honk()`,并且可以通过`base`关键字调用基类的构造函数。 二. C#的继承规则 1. **单一继承**:如前所述,C#不支持多重继承,一个类只能有一个基类。 2. **访问修饰符**:派生类可以访问基类的公共、受保护和内部成员,但不能访问私有成员。默认情况下,派生类继承基类的公共和受保护成员。 3. **覆写和隐藏**:派生类可以使用`override`关键字覆写基类的虚方法,以提供不同的实现。如果想隐藏基类的成员而不覆写,可以使用`new`关键字。 4. **构造函数**:派生类必须通过`base`关键字调用基类的构造函数。如果未显式调用,则会自动调用无参数的基类构造函数。 三. 访问与隐藏基类成员 1. `override`关键字用于覆写基类的虚方法,以改变其行为。例如,如果基类有一个虚方法`Drive()`, 派生类可以`override Drive`来提供特定于派生类的驾驶行为。 2. 使用`new`关键字隐藏基类成员,意味着在派生类中创建了一个新的同名成员,这通常不是推荐的做法,因为可能会导致混淆。 四. 多级继承 在C#中,一个类不仅可以从一个基类派生,还可以从派生类再派生,形成多级继承。这种结构允许更细粒度的代码复用和更复杂的设计。例如,`LuxuryCar`可以派生自`Car`,并添加额外的豪华特性。 五. 继承与访问修饰符 访问修饰符在继承中扮演着关键角色: - `public`:所有类都能访问公共成员。 - `private`:只有类自身能访问私有成员。 - `protected`:类自身及其派生类可以访问受保护成员。 - `internal`:在同一程序集内的类可以访问内部成员。 - `protected internal`:在同一程序集内或派生类中可以访问。 在设计类时,合理选择访问修饰符有助于确保代码的安全性和封装性。 C#的继承机制提供了强大的代码复用和扩展能力,使得开发者可以构建层次分明、结构清晰的类结构,同时保持代码的灵活性和可维护性。理解并熟练掌握继承机制,对于编写高效、高质量的C#应用程序至关重要。