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
Why do I need to declare the type of a variable in java?
what is the constructor and how many types of constructors are used in java?
How to optimize the javac output?
What is the difference between abstract class and interface1? What is an interface?
Can java run on google chrome?
How does a for loop work?
What is the use of pattern in java?
What is a lambda expression ? What's its use ?
Does constructor return any value?
What if constructor is protected in java?
Why is java not 100% pure oops?
What is the byte order of byte buffer?
What is the static import?
Do you know why doesn't the java library use a randomized version of quicksort?
Why do we need strings in java?