Can static methods be overridden?
Answer Posted / coder
Remember that static methods can't be overridden! This doesn't mean they
can't be redefined in a subclass, but redefining and overriding aren't the same thing.
Let's take a look at an example of a redefined (remember, not overridden), static
method:
class Animal
{
static void doStuff()
{
System.out.print("a ");
}
}
class Dog extends Animal
{
static void doStuff()
{
// it's a redefinition,
// not an override
System.out.print("d ");
}
public static void main(String [] args)
{
Animal [] a = {new Animal(), new Dog(), new Animal()};
for(int x = 0; x < a.length; x++)
a[x].doStuff();
// invoke the static method
}
}
/*
Running this code produces the output:
a a a
*/
Here redefining means that you declare a static method with the same signature as the supper class'. So the same method in super class is redefined in the subclass. As you already know that the static methods can't be overridden so this is what you can do if you want the static method to behave differently in the subclass. But remember you can't have the polymorphism since no overridden happens.
| Is This Answer Correct ? | 1 Yes | 1 No |
Post New Answer View All Answers
Is empty string in java?
Explain inner classes ?
What is fail fast in java?
When will we use them?
Are arrays passed by reference in java?
What is difference between ++ I and I ++ in java?
Which variable is the independent variable?
What is the benefit of singleton pattern?
What does the ‘static’ keyword mean? Is it possible to override private or static method in java?
Can we have two main methods in a java class?
Why string is immutable or final in java
Give differences between Quicksort & Mergesort. When should these sorts be used and what is their running time?
Explain the init method?
Can list have duplicates in java?
Can you inherit from an abstract class java?