Oop 结合与多态性

Oop 结合与多态性,oop,polymorphism,late-binding,early-binding,Oop,Polymorphism,Late Binding,Early Binding,与早期绑定和重载类似,后期绑定和重写之间是否存在直接关系 它们(绑定/覆盖/重载)可以被称为实现多态性的方法,但是否存在任何“直接关系”,例如:后期绑定是覆盖的子/超概念,反之亦然等等?它们是正交(独立)概念 重载、重写:多态的形式 早期绑定/后期绑定:在前者中,要调用的方法在编译时已知。在后者中,在运行时 当然,重写的实现通常意味着使用后期绑定,因为您在运行时只知道对象的真实类型。但这只是一个特例。它们是正交(独立)概念 重载、重写:多态的形式 早期绑定/后期绑定:在前者中,要调用的方法

与早期绑定和重载类似,后期绑定和重写之间是否存在直接关系

它们(绑定/覆盖/重载)可以被称为实现多态性的方法,但是否存在任何“直接关系”,例如:后期绑定是覆盖的子/超概念,反之亦然等等?

它们是正交(独立)概念

  • 重载、重写:多态的形式
  • 早期绑定/后期绑定:在前者中,要调用的方法在编译时已知。在后者中,在运行时
当然,重写的实现通常意味着使用后期绑定,因为您在运行时只知道对象的真实类型。但这只是一个特例。

它们是正交(独立)概念

  • 重载、重写:多态的形式
  • 早期绑定/后期绑定:在前者中,要调用的方法在编译时已知。在后者中,在运行时

当然,重写的实现通常意味着使用后期绑定,因为您在运行时只知道对象的真实类型。但这只是一个特例。

因此可以称为重写是基于后期绑定和早期绑定的重载——“始终”?这是典型的场景,但可能有所不同。假设您有一个基类
Pet
,派生类
Dog
Cat
,并且在两个派生类中都覆盖了一个虚拟方法
Speak
。如果编译器/解释器看到以下语句:
Pet p=new Dog();p、 说(),它有足够的信息来执行早期绑定(它知道p将始终是一只
)。很好!!得到了通常现在的含义:)谢谢。所以可以称之为覆盖是基于后期绑定和早期绑定的重载——“总是”?这是典型的场景,但它可以不同。假设您有一个基类
Pet
,派生类
Dog
Cat
,并且在两个派生类中都覆盖了一个虚拟方法
Speak
。如果编译器/解释器看到以下语句:
Pet p=new Dog();p、 说(),它有足够的信息来执行早期绑定(它知道p将始终是一只
)。很好!!明白了通常现在的意思:)谢谢。