Reputation: 445
Polymorphism is the ability to take many forms. Method overriding is runtime polymorphism.
My questions are:
Is there anything like static polymorphism in Java?
Can method hiding be considered a form of polymorphism?
In this question's answer, it is said that static methods are not polymorphic. What is the reason for that?
Upvotes: 5
Views: 1601
Reputation: 635
I believe Method Hiding would technically be considered polymorphic. By definition, a hidden method has the same signature, or form, as one found in its base class. This is just one of its "many forms". Think of it as Overloading... that happens to "override" the exact same signature. This would be static polymorphism.
Upvotes: 0
Reputation: 136002
If we run this test
class A {
static void x() {
System.out.println("A");
}
}
class B extends A {
static void x() {
System.out.println("B");
}
}
class Test {
public static void main(String[] args) throws Exception {
A a = new B();
a.x();
}
}
it will print A. If method x() were polymorphic, it would print B.
Upvotes: 1
Reputation: 26067
Polymorphism
Static Binding/Early binding/Compile time binding - Method overloading.(in same class) Dynamic binding/Runtime binding/Method overriding.(in different classes.)
Polymorphism in java
It just has two types, Method overloading
and Method overriding
, as soon as the method overriding
turn into Method Hiding
, it loses it's polymorphism features.
refer to below question from stackoverflow.
1.) Question1
2.) Question2
Upvotes: 1
Reputation: 347
Upvotes: 1
Reputation: 2398
Polymorphism at runtime takes the form of "dynamic dispatch". That is, the actual method that gets called is determined based on the actual instance you are invoking the method on. Obviously, this applies only when you have an instance of a class, so strictly speaking, polymorphism does not apply to hiding of static methods. For further explanation of the difference check here.
Upvotes: 1