当前位置: 首页 > 编程笔记 >

c#继承中的函数调用实例

尹兴生
2023-03-14
本文向大家介绍c#继承中的函数调用实例,包括了c#继承中的函数调用实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了c#继承中的函数调用方法,分享给大家供大家参考。具体分析如下:

首先看下面的代码:

using System;

 

namespace Test

{

    public class Base

    {

        public void Print()

        {

            Console.WriteLine(Operate(8, 4));

        }

 

        protected virtual int Operate(int x, int y)

        {

            return x + y;

        }

    }

}

namespace Test {     public class OnceChild : Base     {         protected override int Operate(int x, int y)         {             return x - y;         }     } }

namespace Test {     public class TwiceChild : OnceChild     {         protected override int Operate(int x, int y)         {             return x * y;         }     } }

namespace Test {     public class ThirdChild : TwiceChild     {     } }

namespace Test {     public class ForthChild : ThirdChild     {         protected new int Operate(int x, int y)         {             return x / y;         }     } }

namespace Test {     class Program     {         static void Main(string[] args)         {             Base b = null;             b = new Base();             b.Print();             b = new OnceChild();             b.Print();             b = new TwiceChild();             b.Print();             b = new ThirdChild();             b.Print();             b = new ForthChild();             b.Print();         }     } }


运行结果为:
12
4
32
32
32

从结果中可以看出:使用override重写之后,调用的函数是派生的最远的那个函数,使用new重写则是调用new之前的派生的最远的函数,即把new看做没有重写似的。

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。 下面我们以菱形继承为例来演示构造函数的调用: 运行结果: m_a=10, m_b=20 m_a=30, m_c=40 m_a=50, m_b=60

  • 本文向大家介绍JS继承之借用构造函数继承和组合继承,包括了JS继承之借用构造函数继承和组合继承的使用技巧和注意事项,需要的朋友参考一下 借用构造函数继承  在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术(有时候也叫做伪造对象或经典继承)。这种技术的基本思想相当简单,即在子类型构造函数的内部调用超类型构造函数。 

  • 问题内容: 假设Java具有以下层次结构类: 这是C#中相同代码的(盲)重复: 当我执行Java代码时,我得到了C#返回的信息。 对我来说,C#的结果更有意义,因为引用B调用了它自己的方法。 Java设计者决定打印而不是打印的逻辑是什么?我的意思是,为什么引用B在C中使用覆盖方法?这种方法的优势是什么? 如何更改Java代码以像C#一样打印出来?我的意思是,我怎么教Java调用它使用的完全引用的方

  • 问题内容: //: c07:Sandwich.java // Order of constructor calls. // package c07; // import com.bruceeckel.simpletest.*; 此代码的输出是 由于类中的字段是按照声明的顺序创建的,为什么不这样做 在上面列表的顶部? 另外,在此代码中它打算做什么? 起初我以为这是一个匿名类,但看起来并不像它。它正在

  • 如果一个类用同一个函数继承多个类,它如何调用每个继承类的函数而不手动指定每个类? 示例代码如下: 我可以通过手动指定接口来调用接口: 但是对于的,考虑到还会有,,我如何编写代码来调用每个继承接口的。

  • 这可能是一个很难回答的问题,很抱歉。我最近遇到了一个奇怪的问题,当我试图在C++中处理一些高级的东西时,函数重载和继承。 我将展示一个简单的例子,只是为了演示问题; 有两个类,和,如下所示; 据我所知,现在应该有两个函数,由于不同的参数而被重载。 但在main方法中尝试这一点时; 它给出了错误,因为超类中的方法在派生类中不可见。 我怎样才能克服这些呢?在C++中重载不就是这样工作的吗?我是C++新