base关键字

base关键字      专门用来在子类访问父类成员

base.标识符:“.”调用父类同名属性、同名函数、构造函数

 11)父类person
 2 public class Person
 3 {
 4    public Person()
 5   {
 6      Console.WriteLine("Person()");
 7    }
 8  
 9    public Person(string name, int age)
10    {
11      Console.WriteLine("Person(string name, int age)");
12        this.name = name;
13        this.age = age;
14      }
15  
16      protected string name;
17      protected int age;
18      protected string strWords = string.Empty;
19  
20     public void SayHi()
21     {
22       Console.WriteLine("大家好,我叫{0},我今年{1}岁了{2}", name, age, strWords);
23     }
24  
25 (2)子类student
26 public class Student:Person
27     {
28         //子类构造函数会自动调用父类无参构造函数
29         public Student(string name, int age)
30         {
31             this.strWords = strWords;
32         }
33         //子类构造函数可以显示的调用父类构造函数
34         public Student(string name, int age, string strWord)
35             : base(name, age)//显示的调用 父类构造函数
36         {
37             this.strWords = strWords;
38         }
39     }
40  
41 (3)子类teacher
42 public class Teacher:Person
43     {
44         double salary;
45  
46         public Teacher(string name, int age, string strWord)
47         {
48             base.name = name;
49             base.age = age;
50             base.strWords = strWords;
51             //base.name //base 只能访问到父类的非私有成员
52             //this.salary//this可以访问到子类的所有成员和父类的非私有成员
53         }

a)base

  调用父类中非私有的成员(调用成员,父类)base点不出子类独有成员。

  调用父类中的构造函数(调用构造函数,父类)

  当调用从父类中继承过来的成员的时候,如果子类没有重写则this.成员;与base.成员,没有区别。

b)如果子类重写了父类成员,则this.成员;调用的是子类重写以后的。base.成员;调用的依然是父类的成员。

c)子类构造函数默认调用父类的无参构造函数;

d)如果父类没有无参构造函数,则必须指明调用父类哪个构造函数

原文地址:https://www.cnblogs.com/lcxBlog/p/4493804.html