学习C# ---阅读Head First第二版 第六章 笔记

第六章 继承(inherit)

通过继承 , 能避免重复代码 , 已更接近实际的方式对现实世界建模 , 最终开发的代码也将更易于维护.

继承避免子类中出现重复代码

  如果两个类是某种更一般情况的特点特例 , 就可以吧它们创建为继承同一个类 . 这样一来这两个类都是同一个基类(base) 的子类(subclass)

用动物园的动物来模拟继承

 一 , 建立模型 : 从一般到特定

   1. 找到动物共同的特点

   2. 构建一个基类 , 提供动物共有的全部特点

    一个子类改变了所有继承的某个方法时 , 我们称之为覆盖(overriding)

   3. 找出各个动物的那些行为与 Animal 类中所有不同 , 后者哪些行为在 Animal 类中更本没有 . 

   4. 查找有共同特点的类

 二 , 创建类层次体系

   5. 完成类层次体系

    每个子类都会扩展(extending)其基类

新知识 : C# 使用冒号 (:) 表示 继承基类

编写一个类时 , 可以使用一个冒号(:) , 使它继承一个基类 . 这样这个类就成为了一个子类 , 并且得到别继承(基类)的所有字段 , 属性 和 方法.(子类从一个基类继承使基类中所有字段,属性和方法都自动增加到子类)

子类可以覆盖方法改变或特换它继承的方法

1. 为基类中的方法增加 virtual 关键字(子类只能覆盖标志有 virtual 关键字 的方法)

2. 为派生类增加一个同名的方法(这个方法要有完全相同的方法签名 , 这说明返回值和参数都相同 , 而且需要在声明中使用 override 关键字)

小结: 1. 覆盖一个方法之前 , 需要在基类中将这个方法标志位 virtual 

    2 . 只要能使用基类 , 就可以使用它的某个子类. 

    3. 只要能使用基类 , 就可以使用它的某个子类 

    4. 如果一个方法需要父类(基类)作为参数 , 则总是可以传入其子类的实例

子类可以隐藏超类(父类/基类 base)中的方法

如果子类只是增加一个与超类方法同名的方法 , 那么它只是隐藏了超类方法而不是覆盖这个方法

使用不同的引用来调用隐藏的方法

隐藏方法时使用 new 关键字

子类可以使用 base 关键字来访问其基类

注意: 如果基类有构造函数 , 子类也需要有构造函数

  例子 :

  :base(the base class's parameter list)

  在子类构造函数声明的最后增加这行代码 , 告诉C# , 每次实例化子类时都需要调用基类的构造函数 .

基类构造函数在子类构造函数之前执行 .

转载于:https://www.cnblogs.com/shiwuer/p/11027690.html

猜你喜欢

转载自blog.csdn.net/weixin_33941350/article/details/93388764