javaはオブジェクト指向言語であるため、ポリモーフィズムを示す必要があります。以下は、ポリモーフィズムのタイプの私の定義です。アドホック多相性、およびそのサブタイプ。強制。
アドホック多相性は、関数がいくつかの異なるタイプ(共通の構造を示さない場合があります)で機能するか、機能しているように見える場合に取得され、タイプごとに無関係に動作する可能性があります。アドホック多相には、強制と過負荷の2つのタイプがあります。
強制は、型エラーを回避するセマンティック操作です。コンパイラーは、関数呼び出しの引数型を関数定義のパラメーター型に一致させるために、ある型を別の型に変換します。関数定義は1つのタイプでのみ機能します。コンパイラは、コンパイル時に強制を実装します。
この例は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にキャストすることは、私にとってオプションではありません。
狭まりを示す別の強制の例があれば、それを私と共有していただければ幸いです:)
よろしく。