本文实例讲述了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(); } } }
从结果中可以看出:使用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)的技术(有时候也叫做伪造对象或经典继承)。这种技术的基本思想相当简单,即在子类型构造函数的内部调用超类型构造函数。
问题内容: //: c07:Sandwich.java // Order of constructor calls. // package c07; // import com.bruceeckel.simpletest.*; 此代码的输出是 由于类中的字段是按照声明的顺序创建的,为什么不这样做 在上面列表的顶部? 另外,在此代码中它打算做什么? 起初我以为这是一个匿名类,但看起来并不像它。它正在
如果一个类用同一个函数继承多个类,它如何调用每个继承类的函数而不手动指定每个类? 示例代码如下: 我可以通过手动指定接口来调用接口: 但是对于的,考虑到还会有,,我如何编写代码来调用每个继承接口的。
问题内容: 假设Java具有以下层次结构类: 这是C#中相同代码的(盲)重复: 当我执行Java代码时,我得到了C#返回的信息。 对我来说,C#的结果更有意义,因为引用B调用了它自己的方法。 Java设计者决定打印而不是打印的逻辑是什么?我的意思是,为什么引用B在C中使用覆盖方法?这种方法的优势是什么? 如何更改Java代码以像C#一样打印出来?我的意思是,我怎么教Java调用它使用的完全引用的方
这可能是一个很难回答的问题,很抱歉。我最近遇到了一个奇怪的问题,当我试图在C++中处理一些高级的东西时,函数重载和继承。 我将展示一个简单的例子,只是为了演示问题; 有两个类,和,如下所示; 据我所知,现在应该有两个函数,由于不同的参数而被重载。 但在main方法中尝试这一点时; 它给出了错误,因为超类中的方法在派生类中不可见。 我怎样才能克服这些呢?在C++中重载不就是这样工作的吗?我是C++新