7. 封装、继承
一、类的封装:
1、封装就是将数据或函数等 集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。
2、封装的意义在于保护或者防止代码被我们无意中破坏;
3、顶级类的访问修饰符:public、 internal 、protected internal。子类的访问权限不能高于父类的访问权限。
二、类的继承:
1、就是子类包含父类的数据结构和行为方式,包括字段、属性、方法和事件;
2、被继承的类叫基类,继承的类叫派生类或子类;
3、当一个类从另一个类派生出来的时候,派生类就具有基类的数据成员、属性成员和方法成员等;
4、基类中成员的代码,在派生类中已不需要重写,只需要编写基类定义中所不具有的代码;
5、派生类定义与基类同名的成员,则覆盖基类成员;
6、在类的继承中,基类与派生类的声明可以有同名的方法,而且同名的方法可以有不同的代码。也就是说基类与派生类的相同功能中可以有不同的实现方法,从而为解决同一问题提供多种途径;
7、派生类自然继承基类的成员,但不能继承基类的构造函数成员。
8、例:
1 //新建第一个类 2 class Clerk 3 { 4 private string _name; //声明变量 5 public string Name //生成属性 6 { 7 get 8 { 9 return _name; 10 } 11 12 set 13 { 14 _name = value; 15 } 16 } 17 public string Department 18 { 19 get 20 { 21 return department; 22 } 23 24 set 25 { 26 department = value; 27 } 28 } 29 30 private string department; 31 32 //创建一个方法 33 public void Wrte1() 34 { 35 Console.WriteLine("我叫{0},我是{1}部门的!",this.Name,this.Department ); 36 } 37 } 38 39 //新建一个类继承 Clerk 类 40 class Target:Clerk //继承于Clerk 41 { 42 //声明变量并添加属性 43 private int _sellTarget; 44 45 public int SellTarget 46 { 47 get 48 { 49 return _sellTarget; 50 } 51 52 set 53 { 54 _sellTarget = value; 55 } 56 } 57 //定义方法 58 public void Write2() 59 { 60 Console.WriteLine("我叫{0},我是{1}部门的!,我的销售目标是{2}",this.Name ,this.Department ,this.SellTarget ); 61 } 62 } 63 64 //新建一个类继承 65 class Satisfaction:Clerk //继承于Clerk 66 { 67 private double _clientSatisfaction; 68 69 public double ClientSatisfaction 70 { 71 get 72 { 73 return _clientSatisfaction; 74 } 75 76 set 77 { 78 _clientSatisfaction = value; 79 } 80 } 81 public void Write3() 82 { 83 Console.WriteLine("我叫{0},我是{1}部门的!,我的顾客满意度是{2}",this.Name ,this.Department ,this.ClientSatisfaction ); 84 } 85 }
9、多重继承
多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。C# 不支持多重继承。但是,可以使用接口来实现多重继承。
示例:定义一个普通类、一个接口,一个派生类同时继承普通类和接口。这样派生类里面就集成了多个类的方法和属性,可在其他普通类里面实例化派生类调用里面的方法和属性。