1-多态

作者: 浩玥当空 | 来源:发表于2019-05-19 17:16 被阅读0次

1. 继承-inheritance

表达了实现的复用。
inheritance 是从代码复用角度提出的概念,和类型没有直接联系。

2. 子类型-subtyping

在编程语言理论中,子类型subtypeing(也称为子类型多态性subtype polymorphism ,包含多态inclusion polymorphism)是类型多态性的一种形式。
通常表达A是B的子类型,则在使用B的场合都可以替换为使用A。

3. inheritancesubtyping区别

inheritance 表达了实现间的关系。
subtyping表达了类型间的关系。

subtyping-from-wiki

Subtyping should not be confused with the notion of (class or object) inheritance from object-oriented languages;[1] subtyping is a relation between types (interfaces in object-oriented parlance) whereas inheritance is a relation between implementations stemming from a language feature that allows new objects to be created from existing ones.

4. 多态

C++多态分为两类:静态多态、动态多态。

静态多态

静态多态也称为静态绑定或早期绑定,编译器在编译期间完成, 编译器根据函数实参的类型(可能会进行隐式类型转换) , 推断出要调用哪个函数, 如果有对应的函数就调用该函数, 否则出现编译错误。
泛型编程函数重载 可以实现静态多态。

当编译器对一个函数调用选择其合适的实现时,优先级从高到低依次为:

  • 普通函数
  • 基础模板
  • 特化模板
    普通函数相对于模板函数要更有弹性:普通函数支持类型的自动转化;但模板函数则更刻板,不能发现类型之间的自动转换关系。

动态多态。

在程序执行期间(非编译期)根据实际对象判断调用对应的方法。
C++通过虚函数实现动态多态。

鸭子类型 Duck Typing

When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck. @Wikipeida

C++模板

C++使用模板来实现Duck Typing

Go interface

  • 一个类型不需要显式地声明它实现了某个接口
  • 但仅当某个变量的类型实现了某个接口的所有方法,这个变量才能用在要求这个接口的地方。

相关文章

  • 1-多态

    1. 继承-inheritance 表达了实现的复用。inheritance 是从代码复用角度提出的概念,和类型没...

  • 黑马C++视频笔记《多态》

    抽象类中的虚函数指向子类中实现的函数的方式有两种:引用方式和指针方式。 多态案例1-计算器类 多态案例2-组装计算机类

  • 1.9 多态基本概念

    本小节知识点: 【了解】什么是多态? 【掌握】多态的条件 【了解】多态的优点 1.什么是多态? 什么是多态:多态就...

  • C++ 的多态(Polymorphism), virtual f

    多态 c++支持两种多态,编译时多态和运行时多态但其实编译时多态根本不是真正的多态,编译时多态就是函数的重载,ov...

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • 多态

    1.多态 1.多态 1.1 要点 多态是方法的多态,不是属性的多态 多态的存在有三个必要条件:继承;方法重写;父类...

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运...

  • Java_basic_10: 多态polymorphism

    多态polymorphism 多态是指对象的多种形态 主要可以分为引用多态和方法多态 继承是多态的实现基础 引用多...

  • 六、多态与虚函数

    多态的基本概念 多态 多态分为编译时多态和运行时多态。 编译时多态主要是指函数的重载(包括运算符的重载)。对重载函...

  • Java基础之面向对象

    1.多态,继承,封装 Java实现多态有哪些必要条件?具体怎么实现?多态的实现原理?多态的作用? 答:多态的优点 ...

网友评论

    本文标题:1-多态

    本文链接:https://www.haomeiwen.com/subject/wdyqzqtx.html