继承和多态

Posted FANKEXIN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承和多态相关的知识,希望对你有一定的参考价值。

一.继承概述

  1.什么是继承:

  如果类A继承自类B,类B又继承类C,那么根继承的传递性类A也可以具备类C的属性和方法

  我们需要注意的是,如果一个类我们眼睛去看的时候没有继承任何类,那么默认继承object

  2.如何避免这种冗余

  创建一个新的Employee,将PM类和SE类中的公共属性都提取出来放在这个类中

  删除PM和SE类中的公共部分,保留他们各自独有的成员

  编写代码验证是否成功复用代码,PM类和SE类还能否提取出来的属性

二.继承的概念

  继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用已存在的类的功能

  继承:在C#中,类可以继承自另一个类

     衍生的类(子类)继承父类的方法和数据成员

    语法:

      class 子类:父类

        {

            }

    父类叫基类   子类叫派生类

三.关键字base的作用

  可以调用父类的属性,也可以调用自身的属性

四.子类的构造函数

1.继承机制很好的解决了代码复用的问题

2.子类继承父类的成员,并且可以拥有自己特有的成员

3.base关键字可以调用父类的属性,方法和构造函数

4.在子类中,如果不使用base关键字来显示调用基类的构造函数则将隐式调用默认的构造函数

5.protected访问修饰符修饰的成员允许被子类访问

五.继承的作用

  1.继承的特性

    C#中还有一个特殊的关键字sealed,用它修饰的类是不能被继承的,我们称这种类为密封类

    (常用的string就是密封类)

  2.继承的价值

    继承模拟了现实世界的关系,OOP中强调一切皆对象,这符合我们面向对象编程的思考方向

    继承实现了代码重用,这在示例中我们已经有所体会,合理的使用继承可以使代码更简洁

    继承使得程序建构清晰,子类和父类的层次结构清晰,最终的目的是使子类只关注子类的相关行为和状态,无须关注父类的行为和状态

六.实现多态

  1.实现方法重写

    父类定义sayhi()方法,用virtual关键字定义为虚方法

    在子类中定义子类自己的sayhi()方法,用override关键字修饰,就实现了对父类sayhi()方法的重写

  2.定义父类变量,用子类对象初始化父类变量,如:

    Employee ema=new SE("210","Ema",33);

 

以上是关于继承和多态的主要内容,如果未能解决你的问题,请参考以下文章

C++编程题 关于 继承和多态 的

深度剖析—继承和多态

详细的解释下类的封装性,抽象性,继承性和多态性。

C++--多态

C++多态

Java面向对象三大特征之继承和多态