由于java是一种面向对象的语言,它应该表现出多态性。以下是我对一种多态性的定义;ad-hoc 多态性,以及它的一个子类型;强迫。
当一个函数在几种不同的类型(可能不表现出共同的结构)上工作或似乎工作时,获得了临时多态性,并且可能以不相关的方式对每种类型表现。有两种类型的临时多态性,强制和重载。
强制转换是一种避免类型错误的语义操作。编译器将一种类型转换为另一种类型,以便将函数调用中的参数类型与函数定义中的参数类型相匹配。函数定义仅适用于一种类型。编译器在编译时实现强制。
我有这个例子在 C++ 中工作
#include <iostream>
using namespace std;
void display(int a) const
{
cout << "One argument (" << a
<< ')' << endl;
}
int main( )
{
display(10); // returns "One argument (10)"
display(12.6); // narrowing // returns "One argument (12)"
}
我试图在java中实现相同的程序但没有成功。
public static void display (int i)
{
System.out.println("One argument (" + i + ")");
}
public static void main (String[] args)
{
display(10); // One argument (10)
display(12.6); // Narrowing (a type of coercion) takes place. One argument (12)
}
但我收到了错误。
The method display is not applicable for the arguments(double).
你知道如何成功转换。请注意,我真的希望使用编译器自动修复类型的强制技术。所以我用 (int) 12.6 转换为 int 对我来说不是一个选择。
如果您有另一个显示缩小的强制示例,如果您与我分享,我将不胜感激:)
问候。