Aを継承したBのstaticメソッドからAのprotectedメソッドを呼びたい場合。
class A {
protected void foo() {
Console.WriteLine(“foo”);
}
}
class B: A {
public static void bar() {
this.foo(); // < エラー! } }
staticなのでクラスのメンバでもなければインスタンスも存在していないので、
class bではエラーが起きる
それでも、呼び出したい場合
class B: A {
public static void bar() {
B bi = new B();
bi.foo();
}
}
のように、class Bのインスタンスを作れば呼び出せる。
上記は、C#のプログラムだが、Javaも同様。