c# base关键的理解

base 最大的使用地方在面相对性开发的多态性上。(什么是多态,如何理解多态)

base可以【完成】创建派生类实例时调用其基类构造函数或者调用基类上已经被其他方法重写的方法

//关于base调用基类构造函数(只能是一个类的构造函数调用另一个类的构造函数)

 public class A {
        public A(){
            Console.WriteLine("Build A");
        }
    }

    public class B : A {
        public B() :base()
        {
            Console.WriteLine("Build B");
         }
    }//创建一个B的实例对象,获得结果是同时Build A 和 Build B.

 实例化 B类输出结果:Build A 
         Build //进一步扩展  调用基类的构造函数的理public class BaseClass
{    int num;    public BaseClass()    {        Console.WriteLine("in BaseClass()");    }    public BaseClass(int i)    {        num = i;        Console.WriteLine("in BaseClass(int {0})", num);    }}public class DerivedClass : BaseClass{    // 该构造器调用  BaseClass.BaseClass()    public DerivedClass()        : base()    {    }    // 该构造器调用 BaseClass.BaseClass(int i)    public DerivedClass(int i)        : base(i)    {    }    static void Main()    {        DerivedClass dc = new DerivedClass();        DerivedClass dc1 = new DerivedClass(1)();        Console.ReadLine();    }}

// 在派生类总调用基类的方法(实际是对虚方法的重写) 

    public class Q {
        public virtual void Hello() {
            Console.WriteLine("Hello");
        }
    }

    public class W : Q {
        public override void Hello()
        {
            base.Hello();
            Console.WriteLine("World");
        }
    }    实例化  W类    输出结果  hello world

  

时间: 2024-11-04 14:25:19

c# base关键的理解的相关文章

理解 C++ 中继承层次的关键在于理解如何确定函数调用

摘抄自<C++ Primer中文版(第4版)> 关键概念:名字查找与继承 理解 C++ 中继承层次的关键在于理解如何确定函数调用. 确定函数调用遵循以下四个步骤: (1) 首先确定进行函数调用的对象.引用或指针的静态类型. (2)在该类中查找函数,如果找不到,就在直接基类中查找,如此循着类的继承链往上找,直到找到该函数或者查找完最后一个类.如果不能在类或其相关基类中找到该名字,则调用是错误的. (3)一旦找到了该名字,就进行常规类型检查,查看如果给定找到的定义,该函数调用是否合法. (4)假定

C# Lock 解读 (关键是理解最后一句)

最近在研究.NET分布式缓存代码,正好涉及Lock,看了网上的文章,总结了一些Lock相关的知识,供大家一起学习参考. 一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待.这是通过在代码块运行期间为给定对象获取互斥锁来实现的.      在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能

关键概念理解---未完待续

默认情况下,每个主分片都有一个副本,但可以在现有索引上动态更改副本数. 永远不会在与其主分片相同的节点上启动副本分片. 分片分布计算公式:shard_num = hash(_routing) % num_primary_shards _routing是文档的_id 写入到Elasticsearch的文档,在默认的情况下并不马上可以进行搜索.这是因为在Elasticsearch的设计中,有一个叫做refresh的操作.它可以帮在Lucene里的离散的Segments进行合并,并使新进入的文档变为搜

深入理解C指针之一:初识指针

简单来说,指针包含的就是内存地址.理解指针关键在于理解C的内存管理模式.C里面有三种内存: ①.静态全局内存(生命周期从程序开始到程序结束,全局变量作用域是全局,静态变量作用域在定义它们的函数内部): ②.自动内存(在函数内部声明的变量,在函数被调用时创建,作用域和生命周期都在函数内部): ③.动态内存(内存分配在堆上,根据需要释放,通过指针引用,作用域局限于引用的指针): 下面先来生命一个指针并打印其地址和值,这里p%指的是以十六进制的形式返回数据: #include <stdio.h> m

webpy学习笔记——理解URL处理

问题:如何为整个站点设计一套URL处理和调度的方案? 解决方案:webpy的URL处理方案简单但是强大和灵活.在每个应用的顶部,你经常会看到一个在元组中定义的完整的URL调度方案.例如: urls = ( "/tasks/?", "signin", "/tasks/list", "listing", "/tasks/post", "post", "/tasks/chgpass&

译:理解并掌握 JavaScript 中 this 的用法

原文链接:http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ 文章描述:本文原文来自 Javascript.isSexy 这个网站.这篇文章和文中提到的另一篇文章解决了我一直以来对 this 和 apply, call, bind 这三个方法的困惑.我看过很多国内相关的技术文章,没有一篇能让我彻底理解这些概念的.因此我决定把它译过来,不要让更多的初学者像我一样在这个问题上纠结太长时

HDU3338Kakuro Extension(最大流,ISAP)建图是关键

Kakuro Extension Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1144    Accepted Submission(s): 404 Special Judge Problem Description If you solved problem like this, forget it.Because you nee

理解并掌握 JavaScript 中 this 的用法[转]

本文原文来自 Javascript.isSexy 这个网站 来源:code.mforever78.com JavaScript this 用法基础 理解 JavaScript this 的关键 在全局作用域中使用 this this 最容易被误解和难以掌握的情景 1. 解决当包含 this 的方法被当做回调函数时遇到的问题 2. 解决当 this 出现在闭包内遇到的问题 3. 解决把一个 this 方法 赋给一个变量时出现的问题 4. 解决当借用方法的时候 this 的值不正确的问题 结语 我们

递归中对于参数和变量的理解

 对于递归函数:参数,局部变量的生存期和调用时间问题 ================================================================================================== #include <stdio.h> int binary_to_ascii( unsigned int value) { unsigned int quotient; quotient = value / 10;