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();

}

}

}

时间: 2024-11-29 08:10:13

c#继承中的函数调用实例的相关文章

c#继承中的函数调用

首先看下面的代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 using System; namespace Test {     public class Base     {         public void Print()         {             Console.WriteLine(Operate(8, 4));         }         protected virtual int Operate(int x

Swift难点-继承中的构造规则实例具体解释

关于继承中的构造规则是一个难点. 假设有问题,请留言问我. 我的Swift新手教程专栏 http://blog.csdn.net/column/details/swfitexperience.html 为什么要有构造器:为类中自身和继承来的存储属性赋初值. 一.两种构造器-指定构造器和便利构造器 指定构造器:类中必备的构造器.为全部的属性赋初值.(有些子类可能不须要显示声明,由于默认从基类继承了) 便利构造器:类中的辅助构造器,通过调用指定构造器为属性赋初值.(仅在必要的时候声明) 举例 cla

一点一点学架构(二)——继承中的构造函数调用

前言 在Java基础中我们学"继承中的构造方法"时,强调了以下几点: 子类构造过程必须调用其基类的构造过程. 可以通过显示调用或系统默认的方式调用基类的构造过程. 显示调用:通过Super(参数)来调用,且必须放在子类构造方法的第一行. 系统默认调用:调用基类的无参构造函数. 回顾.NET,道理也是一样的. 本文,首先以一个Demo给大家解释一下该知识点,然后再结合项目说一下该知识点的具体应用. 示例 public class GrandFather { public GrandFat

【C++第十课】---继承中的构造与析构

一.继承中的赋值兼容性原则 1.子类对象可以当作父类对象使用 2.子类对象可以直接赋值给父类对象 3.子类对象可以直接初始化父类对象 4.父类指针可以直接指向子类对象 5.父类引用可以直接引用子类对象 6.子类是就是特殊的父类. 举例说明: #include <iostream> using namespace std; class Parent { protected: const char* name; public: Parent() { name= "Parent ...&q

JAVA继承中的构造器调用

关于继承中的构造器调用和调用顺序,做了个小测试,如下: class People {  String name;    //2,第二步,调用此无参构造器  public People() {   System.out.println(".父类的无参构造器");  }    //5,调用此有参构造器  public People(String name) {   System.out.println(".父类的有参构造器");   this.name = name;

C++继承中析构函数 构造函数的调用顺序以及虚析构函数

首先说说构造函数.大家都知道构造函数里就能够调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就能够调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数,仅仅有这样子类才干在构造函数里使用基类的成员,所以是创建子类时先调用基类的构造函数然后再调用自己的构造函数.通俗点说,你要用某些物品.但这些物品你没办法自己生产,自然就要等别人生产出来,你才干拿来用. 接着就是析构函数了,上面说到子类是将基类的成员变成自己的成员,那么基类就会仅仅存在子类中直到子类调

【转】c++继承中的内存布局

今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的.看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用. ——谈VC++对象模型(美)简.格雷程化    译 译者前言 一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节.对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释. Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些.因此,从篇幅和内容来看,译者认为本文

Java继承中的转型及其内存分配

看书的时候被一段代码能凌乱啦,代码是这样的: package 继承; abstract class People { public String tag = "疯狂Java讲义"; //① public String name = "Parent"; String getName(){ return name; } } class Student extends People { //定义一个私有的tag实例变量来隐藏父类的tag实例变量 String tag =

C++类继承中内存的布局

1 前言       了解你所使用的编程语言究竟是如何实现的,对于C++程序员可能特别有意义.首先,它可以去除我们对于所使用语言的神秘感,使我们不至于对于编译器干的活感到完全不可思议:尤其重要的是,它使我们在Debug和使用语言高级特性的时候,有更多的把握.当需要提高代码效率的时候,这些知识也能够很好地帮助我们. 本文着重回答这样一些问题: 1* 类如何布局? 2* 成员变量如何访问? 3* 成员函数如何访问? 4* 所谓的"调整块"(adjuster thunk)是怎么回事? 5*