引用:http://msdn.microsoft.com/en-us/library/hfw7t1ce.aspx
base
base 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。
从静态方法中使用 base 关键字是错误的。
一.在本例中,基类 Person
和派生类 Employee
都有一个名为 Getinfo
的方法。通过使用 base 关键字,可以从派生类中调用基类的 Getinfo
方法。
using System;
using System.Text; namespace ConsoleApplication1
{
class Program
{
public class Person
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine"; public virtual void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
class Employee : Person
{
public string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the base class GetInfo method:
base.GetInfo();
Console.WriteLine("Employee ID: {0}", id);
}
} static void Main(string[] args)
{
Employee E = new Employee();
E.GetInfo();
Console.ReadKey();
}
}
}
运行结果
说明base作用起到了从派生类中调用基类的方法。注意:在重写基类后调用基类的方法是重写后的方法了
二.本示例显示如何指定在创建派生类实例时调用的基类构造函数。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BaseApplication
{ public class BaseClass
{
int num = ;//初始化为0
public BaseClass()
{
Console.WriteLine("in BaseClass() num=" + num);
} public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int i) num={0}", num);
} public int GetNum()
{
return num;
}
} public class DerivedClass : BaseClass
{
// 该构造函数将要调用基类不带参数的 BaseClass.BaseClass()
public DerivedClass()
: base()
{
} // 该构造函数将要调用基类带参数的 BaseClass.BaseClass(int i)
public DerivedClass(int i)
: base(i)
{
}
}
class Program
{
static void Main(string[] args)
{
DerivedClass md = new DerivedClass();
DerivedClass md1 = new DerivedClass();
Console.ReadKey();
}
}
}
运行结果为: