`
leonardleonard
  • 浏览: 821534 次
社区版块
存档分类
最新评论

C#中虚方法重载

阅读更多
在C#中,进行虚方法的重载有些体会,现与大家分享。
首先请大家看看下面的例子,
using System;

abstract public class contact
{
public virtual string prinf()
{
return ("这是虚方法");
}
}

public class class1:contact
{
public string prinf()
{
return ("这是新的方法");//但这会出现编译警告,因为已经从contact那继承了一个同名方法
}
}
想要通过编译,只需将prinf的声明改为
public override string prinf()

public new string prinf()
但是这两种声明方式是有区别的,
请看下面的例子:
using System;

abstract public class contact
{
public virtual string prinf()
{
return ("这是虚方法");
}
}

public class class1:contact
{
public override string prinf()
{
return ("这是新的方法");
}
}
public class class2:contact
{
public new string prinf()
{
return ("这是另一个新的方法");
}
}
public class text
{
public static void Main()
{
contact [] contacts=new contact [2];
contacts[0]=new class1;
contacts[1]=new class2;
foreach(contact ct in contacts)
{
Console.WriteLine(ct.printf);
}
}
}

最后我们看到的结果是

这是新的方法
这是虚方法


而没有看见“这是另一个新的方法”,这是因为class2没有重载虚方法,而是重新定义了一个方法!
这就是两者的区别!!! 
 
分享到:
评论

相关推荐

    关于C#中虚方法重载的说明.rar_E78

    总结来说,C#中的虚方法重载使得我们能够编写灵活、可扩展的代码,实现代码复用和多态性。理解并熟练运用这两个特性,对于提升C#编程能力至关重要。在实际编程中,应根据需求谨慎选择是否声明方法为虚方法,以及如何...

    c#虚方法学习

    在C#编程语言中,虚方法是面向对象编程的一个核心概念,它允许子类重写父类的行为。本文将深入探讨虚方法的概念、用途以及如何在C#中使用它们,特别针对面向对象编程的初学者。 一、虚方法介绍 虚方法是C#中的一种...

    C#虚方法(Virtual)详解

    在C#编程语言中,虚方法(Virtual)是一种关键特性,允许子类重写父类的行为。虚方法的概念在于动态绑定,即在运行时根据对象的实际类型决定调用哪个方法,而不是在编译时就已经确定。这使得面向对象编程中的多态性...

    C#中的重载与覆盖例子

    覆盖是指在派生类中重新定义基类中的虚方法。这意味着当从派生类的对象调用该方法时,将执行派生类中的实现,而不是基类中的实现。这使得派生类能够提供不同于其基类的行为。 **代码示例分析:** 1. **方法Soft的...

    如何在c#中用虚拟的方法实现重载?其实很简单

    本示例展示了如何在C#中使用虚方法实现方法重写,并且解释了方法重载的基本概念。理解这两种方法的区别对于编写高效、易于维护的代码至关重要。通过合理地应用这些概念,可以提高代码的灵活性和可扩展性,同时保持...

    C#中虚函数,抽象,接口的简单说明

    C#中虚函数、抽象、接口的简单说明 在面向对象编程(OOP)中,虚函数、抽象类和接口是三个基本概念,它们在C#语言中也有对应的实现。下面我们将对这三个概念进行详细的解释。 虚函数(Virtual Function) 在C#中...

    c#的重载、覆盖、隐藏

    - **覆盖(Overriding)**:在派生类中重新定义基类中的虚方法,必须使用`virtual`或`abstract`关键字声明基类中的方法,并在派生类中使用`override`关键字来实现覆盖。 - **隐藏(Hiding)**:在派生类中声明一个与基类...

    C#中多态、重载、重写区别分析

    其次,重写(Overriding)是在继承关系中,子类重新定义父类中的虚方法。在C#中,为了能够被重写,父类的方法必须被声明为 `virtual` 或 `abstract`,而子类中相应的方法则需要使用 `override` 关键字。例如: ```...

    第十章 C#继承 派生类 派生类的构造方法.docx

    在C#中,我们可以使用虚方法来实现函数的重写。在基类中,我们可以声明一个虚方法,例如getUrl(),然后在派生类中,我们可以使用override关键字来重写该方法。 在上面的例子中,我们定义了一个基类baseClass,包含...

    C#考试题目大全C#考试题目大全

    11. **虚方法(Virtual Method)**:`virtual`关键字允许在派生类中重写或覆盖基类的方法,以便实现多态性。 12. **Params 关键字**:`params`关键字用于定义方法参数,允许传递可变数量的参数。在这种情况下,`...

    C++方法转C#

    此外,C++的虚函数在C#中对应的是抽象方法或接口实现。 至于C++的字符串,通常使用std::string,而在C#中,字符串是不可变的,使用System.String类。因此,C++中的字符串操作如append、insert等在转换为C#时,需要...

    C#多态测试C#多态测试C#多态测试

    在这个“C#多态测试”主题中,我们将深入探讨C#中的多态性,包括方法的重载、重写、抽象类和接口,以及虚方法和非虚方法的区别。 一、方法的重载(Overloading) 在C#中,方法的重载是指在同一个作用域内,可以有多...

    c#中类的继承

    - 重写用于覆盖父类中的虚方法。子类中的方法必须使用 `override` 关键字声明,并且该方法必须与父类中的方法具有相同的签名(包括返回类型、名称和参数列表)。 - 示例: ```csharp class A { public virtual...

    C#_重载重写_隐藏_数组_集合_委托

    重写是指在一个派生类中重新定义其基类中的虚方法。当一个方法被标记为`virtual`时,这意味着该方法可以在派生类中被重写。重写方法必须与基类中的虚方法具有相同的签名和返回类型。 **示例代码:** ```csharp ...

    深入理解c#t语言的特性

    在深入理解C#语言的特性时,我们需要关注以下几个关键点:类型与转换、变量及其传递、多态与虚方法调用、动态类型确定、以及对象的构造与析构,以及C#语言的新特性。 首先,C#的数据类型分为值类型和引用类型。值...

    北大青鸟c#笔试题

    综上所述,这些题目涵盖了C#中的面向对象编程概念,如属性、构造函数、访问修饰符、静态成员、方法重载、虚方法与覆写、抽象类与抽象方法、类与结构的区别,以及继承的相关知识。理解和掌握这些知识点对于学习C#编程...

    C#语言规范第五版中文版(c#-language-specification-5.0)

    方法重载允许在一个类型中定义多个同名但参数不同的方法。 **3.7 范围** 范围定义了标识符的有效作用域。 - **3.7.1 名称隐藏**:当在一个范围内声明了一个与外部范围中的标识符同名的新标识符时,外部的标识符在...

    设计模式C#案例 c#经典案例.doc

    在C#中,多态可以通过使用虚方法和抽象类来实现。例如,在本文的示例代码中,Person类中定义了一个虚方法Show(),该方法可以被子类Student和Teacher所重写。 集合类是C#中的一种常用数据结构,用于存储和管理一组...

    c#课件之多态和抽象

    在C#中,当一个方法前加上`virtual`关键字,该方法就成为虚方法。这意味着这个方法在运行时可以被派生类中的方法覆盖(override)。虚方法提供了动态绑定的能力,即在运行时决定调用哪个版本的方法。派生类可以通过`...

Global site tag (gtag.js) - Google Analytics