构造函数的作用是构造一个对象,对这个对象进行初始化
在执行派生类的构造函数之前,将会显式或隐式调用基类构造函数
怎么通过派生类来调用基类的构造函数呢?
有以下两种调用方式:
显式调用基类的构造函数的话,就要用到base()关键词了,而且没有参数
用this关键词
namespace xufangfa { public class Pet { public Pet(string name) { _Name = name; } 对_Name进行私有,下划线是私有的标志,但是为了能够让派生类能够继承,就要在其前加protected修饰 protected string _Name; virtual public void PrintName() { Console.WriteLine("Pet's name is" + _Name); } virtual public void Speak() { Console.WriteLine(_Name + "is speaking"); } } public class Dog : Pet {
public Dog(string name):base(name)调用基类的构造函数进行初始化,因为name是基类的字段,用基类的构造函数更高效
{
}
override public void PrintName()
{
Console.WriteLine("宠物的名字是" + _Name);
}
override public void Speak()
{
Console.WriteLine(_Name + "wangwang");
}
}
public class Cat : Pet
{
public Cat(string name):base(name)调用基类的构造函数进行初始化,因为name是基类的字段,用基类的构造函数更高效
{
}
override public void PrintName()
{
Console.WriteLine("宠物的名字是" + _Name);
}
override public void Speak()
{
Console.WriteLine(_Name + "miaomiao");
}
}
class Program
{
static void Main(string[] args)
{
Pet[] pets = new Pet[] {new Dog("黑啤"),new Cat("TOM")};
for(int i = 0; i < pets.Length; i++)
{
pets[i].Speak();
pets[i].PrintName();
}
}
}
}