Base使用

base 关键字用于从派生类中访问基类的成员:

  • 调用基类上已被其他方法重写的方法。

  • 指定创建派生类实例时应调用的基类构造函数。

仅允许基类访问在构造函数、实例方法或实例属性访问器中进行。

从静态方法中使用 base 关键字是错误的。

所访问的基类是类声明中指定的基类。 例如,如果指定 class ClassB : ClassA,则从 ClassB 访问 ClassA 的成员,而不考虑 ClassA 的基类。

示例

在本例中,基类 Person 和派生类 Employee 都有一个名为 Getinfo 的方法。 通过使用 base 关键字,可以从派生类中调用基类的 Getinfo 方法。


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);

}

}

class TestClass{

static void Main() {

Employee E = new Employee();

E.GetInfo();

}

}

/*OutputName: John L. MalgraineSSN: 444-55-6666Employee ID: ABC567EFG*/


示例

本示例显示如何指定在创建派生类实例时调用的基类构造函数。


public class BaseClass{

int num;

public BaseClass() {

Console.WriteLine("in BaseClass()");

}

public BaseClass(int i) {

num = i;

Console.WriteLine("in BaseClass(int i)");

}

public int GetNum() {

return num;

}

}

public class DerivedClass : BaseClass{

// This constructor will call BaseClass.BaseClass()

public DerivedClass() : base() { }

// This constructor will call BaseClass.BaseClass(int i)

public DerivedClass(int i) : base(i) { }

static void Main() {

DerivedClass md = new DerivedClass();

DerivedClass md1 = new DerivedClass(1);

}

}/*Output:in BaseClass()in BaseClass(int i)*/

猜你喜欢

转载自blog.csdn.net/luochenlong/article/details/79303161