私は、アクセス指定子がデフォルトでpublicであるメソッドを持つクラスを持っています。今、このクラスをサブクラスで拡張したいと思います。このメソッドをオーバーライドして、アクセス指定子を「private」にしたいとします。このコードをコンパイルすると、私はコンパイルエラーを取得しています:サブクラスで弱い特権を割り当てることができない理由
"attempting to assign weaker access privileges".
誰かがサブクラスに弱い権限を割り当てると間違っているものを私に説明していただけますか?ここで
は、コンパイル・エラーの原因となったコードです:
class Superclass
{
void foo()
{
System.out.println("Superclass.foo");
}
}
class Subclass extends Superclass
{
private void foo()
{
System.out.println("Subclass.foo");
}
}
興味深い質問!この非常事態*はC++で許可されています。 – quamrana
"私は、デフォルトでアクセス指定子がpublicであるメソッドを持つクラスを持っています"。実際、デフォルトのアクセス指定子は公開されていません。あなたが特定のアクセス指定子を挙げていないのであれば、それは「デフォルト」です:)。 – pikrut
@quamranaそして、スーパークラス型の変数を使ってオブジェクトにアクセスすると、C++ではどうなりますか?コンパイラは確かにそれを通過させる...それは実行時にエラーになりますか? –