在 C# 中重写

重写的概念和作用

在 C# 中,子类可以通过重写(override)基类的方法和属性来实现对基类的更改和完善。重写的作用在于子类可以继承基类的所有方法和属性,但有时基类的方法和属性并不能完全满足子类的需求,为此子类需要对基类的方法和属性进行修改和补充。通过重写,子类可以拥有自己的方法和属性,这些方法和属性可以覆盖基类的方法和属性。

重写方法语法

在 C# 中,可以使用 override 关键字来重写父类方法。重写方法的语法如下:

public override 方法的返回类型 方法名(参数列表)

{

//方法体

}

其中,public 修饰符确定了方法的访问权限;override 关键字指示该方法是对基类中同名方法的重写;方法的返回类型、方法名、参数列表必须与基类方法相同。

注意事项:

重写方法的访问权限不能低于基类方法的访问权限。

重写方法只能出现在子类中,子类的类型必须是基类类型的派生类。

重写方法必须与基类方法在相同的类中。

使用 virtual 关键字来定义基类方法,以使其可以被子类重写。

不能使用 static 或 private 修饰符来定义重写方法。

重写方法可以使用 base 关键字调用基类中的方法。

重写属性语法

与重写方法类似,也可以使用 override 关键字来重写父类属性。重写属性的语法如下:

public override 返回类型 属性名

{

get

{

// 获取属性值的代码

}

set

{

// 设置属性值的代码

}

}

其中,get 访问器用于获取属性的值,set 访问器用于设置属性的值。

注意事项:

与重写方法类似,重写属性的访问权限不能低于基类属性的访问权限。

重写属性只能出现在子类中,子类的类型必须是基类类型的派生类。

重写属性必须与基类属性在相同的类中。

使用 virtual 关键字来定义基类属性,以使其可以被子类重写。

不能使用 static 或 private 修饰符来定义重写属性。

重写属性可以使用 base 关键字访问基类中的属性。

重写示例

下面的示例展示了如何在 C# 中使用重写来扩展基类的功能。

基类:

public class Animal

{

public virtual void Speak()

{

Console.WriteLine("Animal speaks");

}

}

子类:

public class Dog : Animal

{

public override void Speak()

{

Console.WriteLine("Dog barks");

}

}

在上述示例中,Animal 类定义了 Speak 方法,该方法可以被子类重写。Dog 类继承了 Animal 类,并重写了 Speak 方法,使得 Dog 实例调用 Speak 方法时输出 "Dog barks"。

下面是使用该示例的代码:

Animal animal = new Animal();

animal.Speak(); //输出 "Animal speaks"

Dog dog = new Dog();

dog.Speak(); //输出 "Dog barks"

在上述代码中,首先创建了一个 Animal 实例并调用其 Speak 方法,输出 "Animal speaks"。然后创建了一个 Dog 实例并调用其 Speak 方法,输出 "Dog barks"。

总结

重写(override)是 C# 中继承的重要特性之一,它允许子类对基类的方法和属性进行修改和完善。重写方法和属性的语法基本相同,两者的注意事项也很相似。在使用重写时要注意访问权限和基类的类型,以及如何使用 base 关键字来调用基类的方法和属性。通过重写,可以使类更加灵活和可扩展,适应不同的需求。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签