これが私が3つのインターフェースを持っているコードです
interface i1{
int x=1;
}
interface i2{
int x=2;
}
interface i3{
int x=3;
}
class A implements i1,i2,i3{
system.out.println(x); // It shows Field is ambgous
}
これに答える方法、またはこの問題を克服する方法。
インターフェイスは、クラス構造を示すように設計されています。複数のインターフェイスでフィールドを宣言し、それらすべてのインターフェイスを 1 つのクラスで使用する必要がある場合は、その変数に使用するインターフェイスを明示的に宣言する必要があります。
System.out.println(i3.x);
extends
インターフェイスでキーワードを使用して、継承を設定することであいまいさを減らすこともできます。
interface i1{int x=1;}
interface i2 extends i1 {...}
interface i3 extends i2 {...}
class A implements i3{...}
クラス A は、i1、i2、および i3 で宣言されたすべての関数を実装する必要があります。
*強力なテキスト*ただし、この質問に対する回答は多くの人から寄せられています。
しかし、いくつかの詳細な分析があります。
interface I1{
int x=1;
}
interface I2{
int x=2;
}
interface I3{
int x=3;
}
class A implements I1,I2,I3{
static{
System.out.println(I1.x);
}
}
整数 x は public final 整数 x です。コンパイラはそれを最終手段として内部的に変換し、それを定数として扱います。
そのため、ユーザーが x の値を出力すると、コンパイラーはこれに対してあいまいなエラーを出します。
これを実際に実装するには、jdk にある -javap ツールを使用してください。
使用法: javap I1