Pythonでは、クラスメソッドを継承できます。例えば
>>> class A:
... @classmethod
... def main(cls):
... return cls()
...
>>> class B(A): pass
...
>>> b=B.main()
>>> b
<__main__.B instance at 0x00A6FA58>
Javaで同等のことをどのように行いますか?私は現在持っています:
public class A{
public void show(){
System.out.println("A");
}
public void run(){
show();
}
public static void main( String[] arg ) {
new A().run();
}
}
public class B extends A{
@Override
public void show(){
System.out.println("B");
}
}
B.main()を呼び出して「B」を出力したいのですが、「new A()」がハードコーディングされているため、代わりに「A」が出力されることは明らかです。
「newA()」をどのように変更して、ハードコードされたクラスAではなく、呼び出されたときにそのクラスを使用するようにパラメーター化されますか?