技术文摘
C#中new和override的比较
C#中new和override的比较
在C#编程中,new和override是两个重要的关键字,它们在实现多态性和代码复用方面发挥着关键作用,但它们的功能和使用场景有所不同。
new关键字用于在派生类中隐藏基类的成员。当在派生类中使用new关键字声明一个与基类成员同名的成员时,派生类的成员将隐藏基类的同名成员。这意味着在通过派生类实例访问该成员时,将调用派生类中的版本,而不是基类中的版本。例如:
class BaseClass
{
public void Method()
{
Console.WriteLine("BaseClass Method");
}
}
class DerivedClass : BaseClass
{
new public void Method()
{
Console.WriteLine("DerivedClass Method");
}
}
在上述代码中,DerivedClass中的Method方法隐藏了BaseClass中的Method方法。
然而,override关键字用于在派生类中重写基类的虚方法或抽象方法。要使用override关键字,基类中的方法必须标记为virtual或abstract。重写允许派生类提供基类虚方法或抽象方法的特定实现。例如:
class BaseClass
{
public virtual void Method()
{
Console.WriteLine("BaseClass Method");
}
}
class DerivedClass : BaseClass
{
public override void Method()
{
Console.WriteLine("DerivedClass Method");
}
}
与new不同,override遵循多态性原则,即在运行时根据对象的实际类型来决定调用哪个版本的方法。
从使用场景来看,如果只是想在派生类中定义一个与基类成员同名的新成员,不关心基类的实现,并且不期望多态行为,可以使用new。而如果希望在派生类中提供基类虚方法或抽象方法的特定实现,以实现多态性,就应该使用override。
new和override在C#中都有其特定的用途。正确理解和使用它们可以帮助开发者更好地实现代码的复用和多态性,提高程序的可维护性和扩展性。
TAGS: C# 比较分析 New关键字 override关键字
- C++默认拷贝构造函数产生问题的讨论
- 自由软件之父称苹果微软等公司罪大恶极
- 开源真正价值在于人
- 软件开发里的瑞士军刀综合征
- 程序员可否有权自主选择语言和框架
- 14种排序算法与PHP数组的测试评估
- PhpStorm对AngularJS的支持情况
- 2014年流行的Java应用服务器盘点
- JavaFX对不起,Java 8目前救不了你 | 开发技术半月刊第115期 | 51CTO.com
- 把项目发布至Maven中央库
- Java多玩家libgdx学习教程
- Lvs与Keepalived结合MySQL Cluster搭建高可用负载均衡Mysql集群
- 苹果编程语言Swift简介
- 南京互联网荒漠:为何无人愿创业
- 全球主宰的10大算法,你知道吗