zoukankan      html  css  js  c++  java
  • 多态及其实现

    多态及其实现

    1.什么是多态?

    多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。

    C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。

    同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

    2.为什么需要多态?

    作为面向对象的三大特性之一,多态也有代码重用的功能,还有解决项目中紧耦合的问题,提高程序的可扩展性·。具有以下性质:

    可替换性:多态对已存在的代码具有可替换性。

    可扩充性:增加新的子类并不影响已存在类的多态性、继承性以及其他特性的运行和操作。

    接口性:多态是父类(超类)通过方法签名,向子类提供了共同的接口,子类可以通过覆写完善或者覆盖这个接口。

    灵活性:在应用中体现了灵活多样的操作,提高了使用效率。

    参数统一性

    3.多态的实现方式

    实现多态的主要手段有三种:

    一,虚方法 Virtual

    虚方法可以给父类中的方法一个实现,虚方法必须有实现部分,哪怕是空实现。

    关于虚方法需要注意的几点:
    1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
    2.虚方法在父类中必须有实现,哪怕是空实现。
    3.虚方法子类可以重写(override),也可以不重写。

    二、抽象类实现多态

    abstract什么是抽象类?通俗的说就是,光说不做的类,就是不能被实例化.

    首先,抽象类不能被实例化,抽象类中可以有普通成员。

    抽象类存在的意义:

    1.抽象类不能被实例化,只能被其他类继承

    2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象类。)

    3.抽象类就是为了重写→多态(代码重用)。

    4.抽象类中可以有实例成员也可以有抽象成员。

    三、接口实现多态

    什么是接口?
    接口就是一种规范,协议(*),约定好遵守某种规范就可以写通用的代码。
    定义了一组具有各种功能的方法。可以把法律理解为一个接口任何人想要在中国生活,必须遵守中国的法律,也就是说任何人要想在中国,就必须实现法律这个接口。

    (实现接口的意思就是遵守了接口中的规范。)皮包公司(接口)。

    你给我活我有能力去开发网站,但是接到活以后我公司没人会做。于是我把他交给有能力去做的人(实现功能的类)使用接口来实现对扩展开放,对修改关闭接口定义一种能力。

    子类继承抽象类,实现接口

    接口中的成员必须不能有实现

    接口中的成员不能有访问修饰符,隐式公开

    接口中可以有属性、方法、索引器等,但不能有字段

    接口中的所有程序必须被子类中全部实现

    虚方法和抽象方法的区别。

    虚方法必须有实现,抽象方法必须没有实现抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中抽象方法必须在子类中重写,虚方法可以被重写

  • 相关阅读:
    字符串转换的UnicodeDecodeError—— ‘\xa0’问题
    linux下nginx+uwsgi部署python应用
    字符串转换的UnicodeDecodeError—— ‘\xa0’问题
    python的get和post方式请求详解
    MindManager使用说明
    进入程序员的自由天地
    悦读上品 得乎益友
    C++ 是一门难学易用的语言!
    合上More Exceptional C++的瞬间
    从零开始学ASP.NET
  • 原文地址:https://www.cnblogs.com/zzn763754251/p/12494759.html
Copyright © 2011-2022 走看看