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
  • 相关阅读:
    通过squid 禁止访问/只允许访问指定 网址
    Ruby(Selenium / Rspec)在Windows 8_64上安装步骤
    解决MyEclipse报错问题
    java 中 printf()语句的理解
    随机数组的求余运算
    函数探讨
    JAVA中return的用法
    Long.parseLong(String s) 其中s必须是数字形式的字符串,才能运用该函数转化为长整型。
    我编辑的JAVA日历程序
    多个else if语句
  • 原文地址:https://www.cnblogs.com/yeshenmeng/p/9448900.html
Copyright © 2011-2022 走看看