Final Member
Whenever we make a method final, we cannot override it. i.e. we cannot provide implementation to superclass's final method from the subclass. So, The whole purpose of making a method final is to prevent modification of a method from outside the class (child class).
Static Member
Using a static keyword with a member of a class (variable, method, or an inner class) would ensure that there's only one instance of that member for every instance or object of the class. So, If a method is final we cannot override it. Why? Because a static member means that there's only one of its kind and if override it it's not one for every instance of the class.
Now that we've got the purpose of final keyword and a static keyword, let's come to the confusion.
Now, If there's a static member and a final member although both cannot be overridden but I can still differentiate them pretty easily and can imagine different use cases. Like, A final member needs an object to be accessed and can have different values (in case of variables) for different objects and once initialised cannot be changed and a static member can be accessed without any object but it will be the same for every other object and can be changed after initialised.
The final and static members sounds complete compliment of each other.
But the thing that is killing me the most is static methods and static final methods.
Note - I am talking about static and static final methods not variables. I was able to understand the difference between static and static final variable two too. Like a static variable and a static final variable has the same value for every instance and doesn't needs an object to be accessed but a static can be changed while a static final variable once initialised remains the same.
But the only difference in static and static final variables doesn't makes sense to me when it comes to static methods and static final methods. Like we can not change the definition of the method from outside the class
Question - Then what's the point of having a static final method?
Question - What does it mean by a static method can be hidden? Can you please explain with an example?