interface TestInterface
{
public static void square(int a)
{
System.out.println("Square is "+a*a);
}
public static void show()
{
System.out.println("Default Method Executed");
}
}
class TestClass implements TestInterface
{
public void square(int a)
{
System.out.println(a*a);
}
public void show()
{
System.out.println("Overridden Method");
}
public static void main(String args[])
{
TestClass d=new TestClass();
d.square(4);
TestInterface.square(4);
TestInterface.show();
d.show();
}
}
私のコードには疑問があります。私は静的メソッドをJAVAでオーバーライドすることはできないことを知ったが、ここでうまくいっているようだ。修飾子の 不正な組み合わせ::静的およびデフォルトJavaのインターフェースの静的メソッド
をJAVA理由は、この治療は何次のようにこの
interface TestInterface
{
default static void square(int a)
{
System.out.println("Square is "+a*a);
}
public static void show()
{
System.out.println("Default Method Executed");
}
}
のようなエラーがアップ作物 私は一緒にデフォルトと静的キーワードの両方を与え、エラーとして?
静的メソッドは** shadowed **でオーバーライドされません。 –
ありがとうございます。 @ Code-Apprentice、「影にされ、上書きされない」という言葉はどういう意味ですか?コンパイラは静的メソッドと非静的メソッドを2つの全く異なるエンティティとして扱いますか?彼らは同じ署名を持っていても? –
次回は先行研究を試してみてください。 – GhostCat