ネタ心者歓迎!今更ながらにJava相談室 その2
■ このスレッドは過去ログ倉庫に格納されています
0250だめ板住人
NGNGvoid hello() {
System.out.println("hello");
}
static void hello2() {
System.out.println("hello2");
}
String toString() { /* メソッドの修飾子が問題 
;*/
return "class A with hello,hello2\n";
}
}
public class GetInfo {
public static void main(String args[]) {
A obj = new A();
System.out.println(obj.toString());
}
}
上記のコードをコンパイルすると`スーパークラスでの定義より弱いアクセス特権(public)を割り当てようとしました'なるエラーが出ます.
メソッドの修飾子を変えて試してみた所
public->ok
public static->NG
static->NG
と言う結果になりました.
ここで疑問が湧いてきた事は,
1.publicより修飾子無しの方がアクセス特権は弱いがなぜ弱い特権でオーバーライドできないのか(なんらかの不都合があるのか)
2.なぜstaticでオーバーライドできないのか.(これも不都合がある?)
です.
仕様って言ったらそれまでなんでしょうが..
■ このスレッドは過去ログ倉庫に格納されています