Мне сказали, что статические методы в java не имеют наследования, но когда я пытаюсь выполнить следующий тест
package test1;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
TB.ttt();
TB.ttt2();
}
}
package test1;
public class TA {
static public Boolean ttt()
{
System.out.println("TestInheritenceA");
return true;
}
static public String test ="ClassA";
}
package test1;
public class TB extends TA{
static public void ttt2(){
System.out.println(test);
}
}
он напечатал:
TestInheritenceA ClassA
поэтому статические методы (и поля) Java имеют наследование (если вы пытаетесь вызвать метод класса, он идет по цепочке наследования в поисках методов класса). Разве это когда-нибудь было не так? И есть ли какие-либо ОО-языки наследования, которые так испортили методы класса?
Итак, очевидно, статические методы наследуются, но не могут быть переопределены, поэтому разделяет ли С# эту проблему? Есть ли другие языки?