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 语文老师的技能
|