`

override(C# 参考)

    博客分类:
  • C#
 
阅读更多

override(C# 参考)

Visual Studio 2013
 
其他版本
 
18(共 24)对本文的评价是有帮助 评价此主题
 

要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。

示例
 

在此示例中,Square 类必须提供 Area 的重写实现,因为 Area 继承自抽象的 ShapesClass

 
abstract class ShapesClass
{
    abstract public int Area();
}
class Square : ShapesClass
{
    int side = 0;

    public Square(int n)
    {
        side = n;
    }
    // Area method is required to avoid
    // a compile-time error.
    public override int Area()
    {
        return side * side;
    }

    static void Main() 
    {
        Square sq = new Square(12);
        Console.WriteLine("Area of the square = {0}", sq.Area());
    }

    interface I
    {
        void M();
    }
    abstract class C : I
    {
        public abstract void M();
    }

}
// Output: Area of the square = 144


override 方法提供从基类继承的成员的新实现。 由 override 声明重写的方法称为重写基方法。 重写的基方法必须与 override 方法具有相同的签名。 有关继承的信息,请参见继承(C# 编程指南)

不能重写非虚方法或静态方法。 重写的基方法必须是 virtualabstract 或 override 的。

override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相同的访问级别修饰符

您不能使用 newstatic 或 virtual 修饰符来修改 override 方法。

重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtualabstract 或 override 的。

有关如何使用 override 关键字的更多信息,请参见使用 Override 和 New 关键字进行版本控制(C# 编程指南)了解何时使用 Override 和 New 关键字

此示例定义了一个名为 Employee 的基类和一个名为 SalesEmployee 的派生类。 SalesEmployee 类包括一个额外的属性 salesbonus,并重写方法 CalculatePay 以便将该属性考虑在内。

 
class TestOverride
{
    public class Employee
    {
        public string name;

        // Basepay is defined as protected, so that it may be 
        // accessed only by this class and derrived classes.
        protected decimal basepay;

        // Constructor to set the name and basepay values.
        public Employee(string name, decimal basepay)
        {
            this.name = name;
            this.basepay = basepay;
        }

        // Declared virtual so it can be overridden.
        public virtual decimal CalculatePay()
        {
            return basepay;
        }
    }

    // Derive a new class from Employee.
    public class SalesEmployee : Employee
    {
        // New field that will affect the base pay.
        private decimal salesbonus;

        // The constructor calls the base-class version, and
        // initializes the salesbonus field.
        public SalesEmployee(string name, decimal basepay, 
                  decimal salesbonus) : base(name, basepay)
        {
            this.salesbonus = salesbonus;
        }

        // Override the CalculatePay method 
        // to take bonus into account.
        public override decimal CalculatePay()
        {
            return basepay + salesbonus;
        }
    }

    static void Main()
    {
        // Create some new employees.
        SalesEmployee employee1 = new SalesEmployee("Alice", 
                      1000, 500);
        Employee employee2 = new Employee("Bob", 1200);

        Console.WriteLine("Employee4 " + employee1.name + 
                  " earned: " + employee1.CalculatePay());
        Console.WriteLine("Employee4 " + employee2.name + 
                  " earned: " + employee2.CalculatePay());
    }
}
/*
    Output:
    Employee4 Alice earned: 1500
    Employee4 Bob earned: 1200
*/


 

有关详细信息,请参阅 C# 语言规范。该语言规范是 C# 语法和用法的权威资料。

分享到:
评论

相关推荐

    C#开发参考手册

    《C#开发参考手册》是一本专注于C#编程语言的实用指南,旨在为开发者提供一本方便查询和快速理解C#语法及使用方法的手册,其中包含了丰富的实例和示例代码,便于学习和实践。 手册内容从基础入门开始,逐步深入到...

    比较完整的C#语言参考下载

    这份"比较完整的C#语言参考"文档是开发者们宝贵的资源,无需购买书籍即可获取全面的语法知识。 一、C#基础 C#的核心特性包括类、对象、接口、继承、多态等面向对象编程的关键概念。它的语法简洁清晰,易于理解和...

    C#_参考中文的.pdf

    - `override`:用于重写基类中的虚方法。 - `try`:用于包围可能会引发异常的代码块。 - `case`:用于`switch`语句中的分支选择。 - `float`:单精度浮点数。 - `params`:用于接受可变数量的参数。 - `typeof`:...

    C#面向对象编程期末参考题

    C#通过方法重写(Override)和虚方法(Virtual)实现多态。 5. **构造函数**:`ConstructedFunction`可能涉及的是构造函数,用于初始化新创建的对象。构造函数的名字与类名相同,没有返回类型。 6. **析构函数**:...

    微软C#语言参考(C#技术群10181313)

    《微软C#语言参考》是面向C#编程者的一本权威指南,旨在帮助读者深入理解和掌握C#这一强大且广泛使用的编程语言。这本书受到了广大读者的高度评价,是C#学习者的重要参考资料。以下是对该书内容的详细解读: C#(读...

    面向对象c#试题参考

    C#要求在派生类中重写基类的虚函数时使用`override`关键字,而使用`new`修饰符可以隐藏基类成员,但这并不等同于重写。 3. ASP.NET中的代码隐藏:在ASP.NET中,Web窗体页的逻辑代码通常与用户界面分离,存储在以`....

    C#语言参考

    7. **继承和多态**:C#支持单一继承,通过`override`和`virtual`关键字实现方法的覆盖,多态性则通过抽象类和接口实现。 8. **匿名方法和Lambda表达式**:这两种特性简化了短小的代码块,特别是用于委托和 LINQ ...

    C#_函数手册大全+c#公共函数

    本资源包含了"C#_函数手册大全+c#公共函数",旨在为开发者提供全面的C#函数参考资料。下面我们将详细探讨这两个文档可能涵盖的关键知识点。 一、C#函数基础 1. 函数定义:C#中的函数通过`void FunctionName(params)...

    C#自定义开关按钮控件,c#自定义控件方法,C#

    在C#编程中,自定义控件是一种常见的需求,它允许开发者根据项目需求创建具有特定功能或视觉效果的用户界面元素。...在实际项目中,可以参考这些测试用例来验证自定义控件的功能和行为是否符合预期。

    C#程序员参考手册.pdf

    根据提供的文件信息,“C#程序员参考手册.pdf”,我们可以推断出这份文档主要涵盖了与C#编程语言相关的知识和技巧。由于具体的文档内容未给出,以下将基于标题、描述及部分可见内容来推测并构建可能涉及的重要知识点...

    最新最全的C#面试参考资料

    根据给定的文件信息,以下是对C#编程语言中关键概念和面试常见知识点的详细解析: ### 1. 属性(Properties) 属性是C#中用于封装类成员数据的一种方式,它提供了对类中字段的读取和写入权限。通过使用属性,可以...

    Visual C# 2010程序设计教程(教程PPT+源代码)

     本书难度适中,实例丰富,可操作性强,可作为高等学校计算机相关专业的教材或参考用书,也可供广大程序员参考。 目录 第1章.NET平台与Visual Studio开发工具 1.1 Microsoft.NET平台 1.1.1 .NET Framework 4.0...

    C#使用SendMessage实现进程间通信的方法

    本文实例讲述了C#使用SendMessage实现进程间通信的方法。分享给大家供大家参考。具体分析如下: 为了深入理解消息机制,先来做一个测试项目 在新建项目的Form1的代码中,加入方法: protected override void ...

    C# 手动+自动创建GRPC过程及实现,有相关文档说明和demo

    public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context) { return Task.FromResult(new HelloReply { Message = "Hello " + request.Name }); } } ``` 4. 启动服务器:...

    c#自定义开关按钮,很实用

    在C#编程环境中,Visual Studio 2010是一个常用且功能强大的开发工具,用于创建各种类型的应用程序,包括Windows Forms应用。...在压缩包中的"自定义按钮(开关)"文件很可能包含了这些实现的详细代码,可供学习和参考。

    trackBar进度条的颜色及样式均可以修改(C#,VB都可以参考)

    protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // 自定义绘图代码 } ``` - VB.NET中的实现: ```vbnet Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) MyBase....

    C#模拟石英钟的源码QuartzClock

    对于熟悉C#的老手而言,虽然可能相对简单,但也可以作为快速创建类似应用的参考。 首先,让我们理解石英钟的工作原理。石英钟是基于石英晶体振动频率来测量时间的。在电子设备中,石英晶体在特定电压下会以固定频率...

    C#文档 C Sharp文档

    C# 设计中受版本控制加强直接影响的方面包括:单独的 virtual 和 override 修饰符,关于方法重载决策的规则,以及对显式接口成员声明的支持。 C# 程序在 .NET 上运行,而 .NET 是名为公共语言运行时 (CLR) 的虚...

    c# 编的鼠标锁定程序 代码

    在C#编程环境中,开发一个鼠标锁定程序实际上涉及到Windows Forms或WPF应用中的窗口管理和鼠标交互功能。...在解压后的"鼠标锁定程序"文件中,应该包含了完成上述功能的源代码,供开发者参考和学习。

    c#制作的程序加载动画,比较实用

    protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.TranslateTransform(Width / 2, Height / 2); g.RotateTransform(rotationAngle); g.DrawImage加载图标, -加载图标.Width / 2...

Global site tag (gtag.js) - Google Analytics