第六章 继承和多态

1.继承有哪些特性:

  1.单根性    2.传递性

2.父类的哪些成员可以被继承?

  私有成员不能被继承,父类的构造

3.继承:

  在C#中,如果一个类后面通过冒号又跟了另外一个类,那么我们就称冒号前面的类为子类,

冒号后面的类为父类,这种书写方式放映出来的关系就称为类的继承关系

4.子类:派生类   父类:基类或者超类

5.满足什么条件的类可以使用继承?

  满足is a关系的两个类可以使用继承

  例如:经理 is a 员工    

6.如果new一个子类对象,那么如下操作流程:

  1.先 定位到子类对应构造函数,没有执行子类的方法体

  2.转向了父类的无参构造函数,执行父类构造方法体

  3.转向了子类的方法体继续执行

7.如果在子类构造中,没有使用base显示调用父类的构造,那么系统也会自动调用父类的无参构造:

  1.base代表父类对象,如果base(),调用父类的构造函数

  2.base代表的是方法调用,是不需要参数类型的

8.通过base调用父类构造函数注意点:

  1.通过base调用父类构造函数只能书写在子类的构造后

  2.通过base调用父类构造函数参数顺序和父类的构造参数一致

注意:方式一:new Student("张靓颖",20);

和方式二:new Student

{

   Name="张靓颖",Age=20

}区别?

最终都能实现对类中的属性赋值。

但是赋值的原理不同,

方式一:直接调用该类的带参构造赋值。

1.先通过无参构造创建出类的对象

2.对象名.属性名的方式赋值

9.访问修饰符

    public:在任何位置都可以访问,甚至是跨程序集都可以访问。

    private:只能当前类的花括号中访问。

    protected:只能在当前类,当前类的子类,子类的子类(孙子类)中可以访问。

10.继承的传递性

  如果一个类B继承自类A,而类C又继承类B,那么类C也可以访问到类A中非私有成员

11.继承的单根性

  在很久很久以前,有一个叫C++的家伙,他是支持多继承的语言,突然有一天,10个程序员用多继承,有9个都用错了,后续的Java和C#语言因此不再支持多继承。

在C#中,一个类只能有一个父类,C#和Java都不支持多继承。要想使用多继承,那么请您使用接口。。

遍历窗体上所有的控件,判断是不是文本框

foreach(Control c in this.Controls)

{

    if(c is TextBox)

      {

        ((TextBox)c).Text="";

      }

}

is a 判断一个对象是否是某个类型。

12.继承的价值

        1.模拟现实世界的关系

        2.便于重用和扩展已彻底测试的代码,且无需修改

        3.结构更清晰

13.多态

      不同的对象对于同一个操作,做出的响应不同,那么这种情况在面向对象编程中就称为多态

      

14.使用多态的目的?

  使用多态就是为了统一调用

15.实现多态三种方式:

  方式一:通过虚方法实现多态

  实现多态的步骤

     1.在父类中通过virtual关键字定义一个虚方法

     2.在子类中通过override关键字对父类中的虚方法进行重写

     3.调用的时候,调用的是子类的方法

虚方法实现多态

通过在普通类Person中用Virtual关键字定义虚方法SayHello(),然后在子类Student中通过override关键字对父类的SayHello()方法进行重写。

原文地址:https://www.cnblogs.com/gaoweixiao99/p/4641989.html