Статические методы - это метод, единственная копия которого используется всеми объектами класса. Статический метод принадлежит классу, а не объектам. Так как статические методы не зависят от объектов, компилятору Java не нужно ждать создания объектов. Поэтому для вызова статического метода мы используем синтаксис, такой как ClassName.method ();
В случае перегрузки методов методы должны находиться в одном классе для перегрузки. Даже если они объявлены как статические, их можно перегрузить как,
Class Sample
{
static int calculate(int a,int b,int c)
{
int res = a+b+c;
return res;
}
static int calculate(int a,int b)
{
int res = a*b;
return res;
}
}
class Test
{
public static void main(String []args)
{
int res = Sample.calculate(10,20,30);
}
}
Но в случае переопределения метода метод в суперклассе и метод в подклассе действуют как разные методы. у суперкласса будет своя собственная копия, а у подкласса будет своя собственная копия, поэтому он не будет переопределен методом.