0

从研究中我了解到:

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

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

例如:

参数

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()
) sound() 将根据实例(狗或猫)工作)。

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

参数多态性是指相同的代码可以应用于多种数据类型。
前任。重载、模板和泛型

Ad-hoc 多态性是指不同的代码用于不同的数据类型。
前任。覆盖,运算符重载

附加问题:

为什么运算符重载即席(动态绑定)?

还:

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

4

2 回答 2

2

我将尝试以不同的方式回答您的两个问题。

编译时间/运行时间:在编译时,编译器只能验证语法正确的内容。它是运行时,它可以执行行为评估。例如

如果你有两个类BC扩展A. 有一种方法被声明为 return A。在您的调用者中,您期望它将返回B. 您可以键入强制类型转换返回值Bas (B)A。编译器不会在这里抱怨任何问题。但是如果在运行时,它发现你的方法是返回实例c,它会失败。

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

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

我希望这有帮助。

于 2012-10-09T05:58:33.233 回答
1

在 Java 中,您没有运算符重载,即使==这会让 Java 新手程序员感到困惑。

您需要了解基本的多态性原理,但我会确保您在揭开封面之前了解您的编程的所有高级特性。

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

于 2012-10-09T05:55:36.423 回答