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



从研究中我学到了什么:

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

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

例如:

参数

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())在不同时间表现不同
soud()将根据什么实例(狗或猫)工作)

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

参数多态性是指同一代码可以应用于多个数据类型
例如。重载、模板和泛型

特殊多态性是指不同的代码用于不同的数据类型
例如。覆盖,操作员过载

附加问题:

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

还有:

如果你是一名程序员,你应该注意这些事情,比如运行时多态性、编译时多态性,动态链接、静态链接、框架含义,
框架和库之间的区别,什么是重量级框架意味着什么是轻量级框架意味着等等,还是我应该继续编程,只要我的程序能工作?

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

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

如果有两个扩展A的类BC。有一种方法是声明返回CCD_ 4。在你的呼叫者身上,你预计它会回来CCD_ 5的实例。您可以将B的强制转换返回值键入为(B)A。编译器不会在这里抱怨任何问题。但如果在运行时,它发现是c的返回实例,则它将失败。

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

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

我希望这能有所帮助。

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

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

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

最新更新