CS3L13——继承的基本规则
继承
一个类A 可以继承 另一个类B,继承的类A 会继承 被继承的类B 的所有成员,继承的类A 会拥有 被继承的类B 的所有特征和行为
- 被继承的类可以称为:父类、基类、超类
 
- 继承的类可以称为:子类、派生类
 
子类可以有自己的特征和行为
特点
- 单根性:C#的子类只能有一个父类
 
- 传递性:子类可以间接继承父类的父类
 
继承基本语法
访问修饰符的影响
- 
public - 公共 内外部访问 
- 
private - 私有 内部访问 
- 
protected - 保护 内部和子类访问 
在命名空间讲到:
- 
internal - 内部的 只有在同一个项目程序集的文件中,内部类型或者是成员才可以访问 
继承使用实例
如果与基类的成员重名会导致基类的成员被隐藏,这不是好的写法,
如果有意覆盖需要在变量类型前加上 new,但即使这样也不建议这样写,这种写法仍然不好
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
   | class Teacher {     public string name;     public int number;     protected int age;         private bool sex;            public void SpeakName()     {         Console.WriteLine(name);     } }
  class TeachingTeacher : Teacher {        public string subject;                public void SpeakSubject()     {         Console.WriteLine(subject + "老师" + age);         } }
 
  class ChineseTeacher : TeachingTeacher {               public new string name;     public void Skill()     {         Console.WriteLine("语文老师的技能");     } }
  internal class Program {     static void Main(string[] args)     {         TeachingTeacher tt = new TeachingTeacher();                  tt.name = "liuqi";         tt.number = 1;         tt.SpeakName();                  tt.subject = "unity";         tt.SpeakSubject();
                   ChineseTeacher ct = new ChineseTeacher();         ct.name = "liuqi";         ct.number = 2;         ct.SpeakName();         ct.SpeakSubject();         ct.Skill();     } }
   | 
 
输出:
1 2 3 4 5
   | MrTang unity老师0
  老师0 语文老师的技能
   |