编译时多态性运行时多态性是这样的吗?

时间:2012-10-09 05:40:57

标签: java c++ polymorphism

从研究中我学到了什么:

重载,运算符重载和覆盖就是我们所说的多态。

多态性意味着同一个实体有时表现不同

例如:

参数

add(12, 13);
add(12.2, 13.3);

相同的实体( add())有时表现不同(适用于double,适用于int )。

//模板也在这里工作

特设

Animal dogInstance = new Dog();
Animal catInstance = new Cat();
dogInstance.sound(); //bark
catInstance.sound(); //meow

相同的实体(声音())在时间上表现不同 sound()将根据什么实例(狗或猫)工作。

重载,模板和泛型发生在编译时(编译时多态) 重写,运算符重载在运行时发生(运行时多态)。

参数多态是指将相同的代码应用于多种数据类型 恩。重载,模板和泛型

Ad-hoc多态性是指将不同的代码用于不同的数据类型 恩。覆盖,操作员超载

补充问题:

  

为什么运营商重载ad-hoc(动态绑定)?

此外:

如果您是程序员,您应该注意运行时多态性,编译时多态,动态链接,静态链接,框架含义等内容。 框架和库之间的区别,什么是重量级框架意味着什么是轻量级框架意味着什么,或者我应该继续编程,只要我的程序有效?

2 个答案:

答案 0 :(得分:2)

我会尝试回答你的两个问题。

编译时间/运行时间:在编译时,编译器只能验证语法上的正确性。它是运行时,它可以执行行为评估。 e.g。

  

如果您有两个课程BC延长A。有一种方法是         声明返回A。在您的调用者中,您希望它会返回         B的实例。您可以将投射返回值输入B作为(B)A。编译器         这里不会抱怨任何问题。但是如果在运行时它找到了你的方法         是c的返回实例,它将失败。

我在这里要解释的是:有些行为只能在运行时进行评估。

编程:当您编写小型教程时,您所关心的只是程序的成功和您的基本学习。当您编写更大/更重的使用应用程序时,您必须非常小心。一切,例如字符串连接,变量选择,迭代次数,对象引用很重要。

我希望这会有所帮助。

答案 1 :(得分:1)

在Java中,你没有运算符重载,即使==混淆了新手Java程序员。

您需要了解基本的多态性原则,但在解除封面之前,我会确保您了解编程的所有高级功能。

我认为没有重量级或轻量级框架的标准定义。我认为它主要是一种设计策略,要么将所有内容都包含在一个库中,要么尽可能简单。

相关问题