zoukankan      html  css  js  c++  java
  • (转)C#中base关键字的几种用法

    base其实最大的使用地方在面相对性开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法。
    例如:

    2.1关于base调用基类构造函数
    public class A
    {
            public A()
            {
                    Console.WriteLine("Build A");
            }
    }
    public class B:A
    {
            public B():base()
            {
                    Console.WriteLine("Build B");
            }
            static void Main()
            {
                    B b = new B();
                    Console.ReadLine();
            }
    }
    创建一个B的实例对象,获得结果是同时打印Build A和Build B.

    2.2关于base在派生类中调用基类的方法。
    public class A
    {
            public virtual void Hello()
            {
                    Console.WiriteLine("Hello");
            }
    }
    public class B : A
    {
            public override void Hello()
            {               
                    base.Hello();//调用基类的方法,显示Hello
                    Console.WiriteLine("World");
            }
    }
    这样如果程序调用B.Hello()获得的效果将会使Hello World.
     
     
    +++++++++++++++++++++++++++++ 文章二 +++++++++++++++++++++++++++++
     
    关于base
    base 关键字用于从派生类中访问基类的成员:
    调用基类上已被其他方法重写的方法。
    指定创建派生类实例时应调用的基类构造函数。
    基类访问只能在构造函数、实例方法或实例属性访问器中进行。

    示例:
    1. 在派生类中调用基类方法。
    using System;
    public class BaseClass
    {
        protected string _className = "BaseClass";
        public virtual void PrintName()
        {
            Console.WriteLine("Class Name: {0}", _className);
        }
    }
    class DerivedClass : BaseClass
    {
        public string _className = "DerivedClass";
        public override void PrintName()
        {
            Console.Write("The BaseClass Name is {0}");
            //调用基类方法
            base.PrintName();
            Console.WriteLine("This DerivedClass is {0}", _className);
        }
    }
    class TestApp
    {
        public static void Main()
        {
            DerivedClass dc = new DerivedClass();
            dc.PrintName();
        }
    }

    2. 在派生类中调用基类构造函数。

    // keywords_base2.cs
    using System;
    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();
        }
    }
    注意:
    从静态方法中使用 base 关键字是错误的。
     
    文章转载自:https://www.cnblogs.com/eedc/p/6343201.html
  • 相关阅读:
    JAVA并发编程学习笔记之ReentrantLock
    服务架构演进
    Java集群优化——dubbo+zookeeper构建高可用分布式集群
    Dubbo实例
    hessian学习
    JAVA分布式事务原理及应用
    了解AngularJS $resource
    AngularJS Resource:与 RESTful API 交互
    Hibernate解决高并发问题之:悲观锁 VS 乐观锁
    互联网金融高并发方案
  • 原文地址:https://www.cnblogs.com/yeshenmeng/p/9448900.html
Copyright © 2011-2022 走看看