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

Java 编译时多态性运行时多态性是这样的吗?,java,c++,polymorphism,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.so

通过这项研究,我学到了:

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

多态性意味着同一实体有时行为不同

例如:

参数化

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

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

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

特殊多态性是指不同的代码用于不同的数据类型。
例如,重写、运算符重载

附加问题:

为什么运算符重载特殊(动态绑定)

此外:

如果您是一名程序员,您是否应该考虑运行时多态性、编译时多态性、动态链接、静态链接、框架含义等问题
框架和库之间的区别,什么是重框架意味着什么是轻框架意味着什么等等,或者我应该继续编程,只要我的程序工作吗?

在Java中,你没有操作符重载,即使对于
==
,这会让新手Java程序员感到困惑

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


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

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

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


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

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

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

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

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

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


我希望这有帮助

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

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

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

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

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


我希望这有帮助

请编辑您的帖子以使用
句子大小写
。。我们会处理的。所以,你的问题是,你是否应该深入了解你在做什么,或者只要你的程序正常运行,你就可以“不在乎”,我能理解吗?我们这里的大多数人都可以很好地阅读,而不必使用所有的大写和粗体!!抱歉,我认为这会有帮助,请编辑您的帖子,使用
句子大小写
。。我们会处理的。所以,你的问题是,你是否应该深入了解你在做什么,或者只要你的程序正常运行,你就可以“不在乎”,我能理解吗?我们这里的大多数人都可以很好地阅读,而不必使用所有的大写和粗体!!对不起,我以为这会有帮助。对不起,我忘了java中没有运算符重载。对于你来说,什么是即席多态性和参数多态性?它们不是我在Java中遇到的术语。在Java中,JIT可以基于运行时行为优化多态性,这是毫无价值的。这意味着它可以在明显动态的情况下静态应用,例如,如果