В 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», но, очевидно, вместо этого он напечатает «A», поскольку «new A ()» жестко закодирован.
Как бы вы изменили «new A ()», чтобы он был параметризован для использования класса, в котором он вызывается, а не для жестко закодированного класса A?