继承在多种语言中都有使用,我们在写程序时可能类与类会具有相同的字段和属性。继承的目的便是将相同的代码封装起来,子类继承父类的,实现相同的功能,避免了代码冗余,十分的方便。
那么在C#中,创建类时,先创建一个父类 person类,再创建子类teacher和student 类, student 类和teacher类将拥有person类的所有属性和方法。但在主函数中调用的时候,都要先进行实例化。在三个类中是有重复的,teacher和student都是人,都具有相同的姓名性别年龄。将这些相同的抽出来放到一个类中。通过某种关系,将teacher和student与person建立关系。这个关系就可以称之为继承。此时就可以省略teacher和student中相同的属性和字段。
下边是各个类所具备的属性,以person为例
实例化各个类:
当然,除去相同的属性外,teacher和student 类中可以有各自独有的方法和属性,各自的属性最好不要放到person父类中,举例:teacher具有工资的属性但不能说明所有人都有工资的属性;student 有学号,但不能说所有人都有学号。在这里,teacher类或student 类成为子类,person类为父类。另一种可以称teacher类或student 类为派生类,person类为基类。
那么如何产生继承关系呢?
这里需要在子类和父类之间使用冒号: 连接实现。当继承之后,子类中就没必要再有父类中的属性了。这时就可以调父类中的所有属性。teacher继承了person之后,person类中的属性和方法均可被使用 。
对方法进行补充,完善相关信息
此时实例化:
此时类图就发生了如下变化,空心箭头永远指向父类。接触继承关系,则相互脱离。其中的program则与其无关。
→
看类图的好处:
当类相当多时,所有的类文件都在项目列表中,难以分清子类和父类。而且在程序中是不容易找出的,所以只需查看类图即可清晰的看到。
补充:在C#中,所有的类都直接或间接的继承了自己的object类。(如果我们没有定义父类,则object就是我们继承的父类。)
继承的单根性:在C#中,基类只有一个。即父类只有一个,子类可以有很多个。一个类可以被多个子类继承,但一个子类不能有很多个父类。
继承的传递性:通过构造函数,将子类中的一些值传递到父类当中。给父类中的字段赋值。