base的使用(二)
base的用法场景主要可以概括为两种:
1、访问基类的字段
2、调用基类构造函数
base 就相当于父类Animal,方便在子类访问父类的方法和属性,简化代码。
例子1、base访问基类的方法(参考阿里云社区)
internal class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
dog.sound(); //调用子类(派生类)的方法
Console.ReadKey();
}
}
public class Animal //定义父类(基类)
{
public virtual void sound() //定义父类(基类)的方法
{
Console.WriteLine("(父类)动物的叫声:wangwangwang");
}
}
public class Dog : Animal //子类继承父类
{
public override void sound() //重载父类(基类)的方法
{
base.sound(); //在这里会先执行(父类)基类的方法,再向下执行
Console.WriteLine("(子类)动物的叫声:wowowo");
}
}

例子2 、调用基类构造函数
static void Main(string[] args)
{
//base[beɪs] 基础,基底
//base的作用就相当于替代Animal,在子类中去访问父类的成员和方法
Dog dog = new Dog(10);
dog.sound();
}
public class Animal
{
public Animal() //父类(基类)的构造函数
{
Console.WriteLine("发现未知动物");
}
public Animal(int a) //父类(基类)的有参构造函数
{
Console.WriteLine("发现{0}只未知动物", a);
}
public virtual void sound() //父类(基类)的方法(可重载)
{
Console.WriteLine("动物的叫声:wangwangwang");
}
}
public class Dog : Animal
{
public Dog() //子类(派生类)的构造函数
{
Console.WriteLine("未知动物为小狗");
}
public Dog(int a):base(a) //base相当于Animal,先调用基类Animal(int a)方法
{
Console.WriteLine("小狗的数量为{0}", a);
}
public override void sound() //重载父类(基类)的方法
{
base.sound();//这里会先调用父类(基类)的方法
Console.WriteLine("再调用子类(派生类)的方法");
}
}
