面向对象语言的三大特性
一、 封装
类是对字段,属性,方法等数据成员的封装
属性是对字段的封装
项目是对类的封装
二、 继承
父类(基类)
子类(扩展类)
在C#中子类可以继承到父类
在子类的声明时,只需要在类名后加上”:”加上父类的类名,即代表此子类是从父类继承的类
如: class B:A 代表B类从A类继承, A类是父类,B类是子类.B类的成员具有A类的所有public的方法及属性
Protected 访问符,使用此访问符在父类中声明的成员,只允许在子类中访问。
继承中的构造方法
在实例化子类实例时会调用子类的构造方法,在调用子类构造方法前会先调用父类的构造方法。
注意:在子类构造方法调用前会先调用父类的无参构造方法。
如果在子类的构造方法中要调用父类的有参构造方法,只需要在子类构造方法声明时,在方法后面加上“:”base(父类构造方法调用时的实参)
三、 多态
在继承链中可以使用父类的指针指向子类的实例
子类中和父类中的方法同名同参称作方法的重写
在父类声明时,将方法前面加上virtual关键字,代表此方法为虚方法
在子类中,可以使用new来隐藏父类中使用virtual声明的同名方法
方法被隐藏后,在使用父类指针指向子类实例时,隐藏的方法会被调用.
在子类中,可以使用override来覆盖父类中使用virtual声明的同名方法
方法被子类覆盖后,即使使用父类指针指向子类实例,仍然是子类的实现。