ネタ心者歓迎!今更ながらにJava相談室 その2
レス数が900を超えています。1000を超えると表示できなくなるよ。
0937デフォルトの名無しさん
NGNGどうしても理解できないコンパイルエラーが出るので
どなたか教えてください。
以下のインタフェースTestIF とそれを実装するクラス
TestCL をひとつのソースファイルにTest.javaに書いて
コンパイルします。(以下参照)
---------------------------- Test.java ---------
interface TestIF
{
void f();
}
class TestCL implements TestIF
{
void f() {}
}
------------------------------------------------
すると以下のエラーが出ます。
Test.java:7: TestCL の f() は TestIF の f() を実装できません。
スーパークラスでの定義より弱いアクセス特権 (public) を割り当てようとしました。
class TestCL implements TestIF
^
疑問1
このエラーメッセージで、「スーパークラス」とは何を指しているの
でしょうか?
疑問2
仮に「スーパークラス」を「インタフェース」と解釈
しても、void f() はTestCLクラスで元のインタフェースでの定義
でのデフォルトアクセス修飾(パッケージのみ)と同じなので
「より弱いアクセス特権」というメッセージも理解できません。
疑問3
「(public) を割り当てようとしました。」というのも、、
してねーじゃん!!としかおもえません。
どなたか、アドバイスおねがいします。
レス数が900を超えています。1000を超えると表示できなくなるよ。