【转】C#中base关键字的几种用法: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();
    }
}

运行结果:

Build A

Build B

2.2关于base在派生类中调用基类的方法。

    public class A
    {
        public virtual void Hello()
        {
            Console.WriteLine("Hello");
        }
    }
    public class B : A
    {
        public override void Hello()
        {
            base.Hello();//调用基类的方法,显示Hello
            Console.WriteLine("World");
        }
    }

运行结果:

Hello

World

下面是我自己改进了一下上面的例子:

    public class A
    {
        public virtual void Hello()
        {
            Console.WriteLine("Hello");
        }
    }
    public class B : A
    {
        public static void Main ()
        {
            B b = new B();
            b.Hello2();
            b.Hello();
        }

        public override void  Hello()
        {
            base.Hello();//调用基类的方法,显示Hello
            Console.WriteLine("World");
        }
        public void Hello2()
        {
            base.Hello();//调用基类的方法,显示Hello
        }
    }

运行结果:

Hello

Hello

World

关于Base:

base 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。

1. 在派生类中调用基类方法。

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._className);
        //调用基类方法
       base.PrintName();
        Console.WriteLine("This DerivedClass is {0}", _className);
    }
}
class TestApp
{
    public static void Main()
    {
        DerivedClass dc = new DerivedClass();
        dc.PrintName();
    }

}
}

运行结果:

The BaseClass Name is BaseClass

Class Name: BaseClass

This DerivedClass is DerivedClass

原文地址:https://www.cnblogs.com/sggggr/p/11847731.html

时间: 2024-11-08 23:55:37

【转】C#中base关键字的几种用法:base()的相关文章

Java中this关键字的几种用法(转)

当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = "Hello"; public Hello(String s) { System.out.println("s = " + s); System.out.println("1 -> this.s = " + this.s); this.s = s;//把参数值赋

Java中this关键字的几种用法

1 . 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = "Hello"; public Hello(String s) { System.out.println("s = " + s); System.out.println("1 -> this.s = " + this.s); this.s = s;//把

.NET(c#)new关键字的三种用法

前几天去家公司面试,有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是在Framework 2.0 中定义泛行时才会使用到的,自己对c# 2.0 中的支持还只是粗通皮毛,怪不得累死so many脑细胞也没能想不出这第三种来! 三种用法如下: 在 C# 中,new 关键字可用作运算符.修饰符或约束. 1)new 运算符:用于创建对象和调用构造函数.这种大家都比较熟悉,没

mysql中模糊查询的四种用法介绍

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”.“三脚猫”,“唐三藏”等等有“三”的记录全找出来. 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * FROM [user] WHERE u_name LIKE

[java]static关键字的四种用法

在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下static关键字及其用法. static关键字 1.修饰成员变量 在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句话挺起来都点奇怪,其实这是相对于对象的属性和方法来说的.请看下面的例子:(未避

[java]final关键字的几种用法

在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final关键字及其用法. final关键字 在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是"这是不可变的".下面,我们来讲final的四种主要用法. 1.修饰数据 在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量.在java中,用final关键字修饰

Java中super关键字的作用与用法

Java中的super是什么?java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中.主要用于以下情况: 1.使用super与变量:当派生类和基类具有相同的数据成员时,会发生此情况.在这种情况下,JVM可能会模糊不清.我们可以使用以下代码片段更清楚地理解它: /* Base class vehicle */ class Vehicle { int maxSpeed = 120; } /* sub class Car extending vehic

JSP中的include的两种用法

1.两种用法 <@inlcude file ="header.jsp"/> 此时引入的是静态的jsp文件,它将引入的jsp中的源代码原封不动地附加到当前文件中,所以在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西.例如里面不要包含<html><body>这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错. <jsp:include page

NEW关键字的三种用法

声明:本文最初是本人从他出转载到51CTO上的一篇文章,但现在记不清最初从出处了,原文作者看到还请原来,现在发表在这里只为学习,本人在51CTO的该文章的地址为:http://kestrelsaga.blog.51cto.com/3015222/751536 一.             new运算符 ①     用于创建对象和调用构造函数. 例如: Class1 obj  = new Class1(); ②     还可用于创建匿名类型的实例: var query = from cust in