What is method hiding in Java? Even the JavaDoc explanation is confusing

public class Animal { public static void foo() { System.out.println(“Animal”); } } public class Cat extends Animal { public static void foo() { // hides Animal.foo() System.out.println(“Cat”); } } Here, Cat.foo() is said to hide Animal.foo(). Hiding does not work like overriding, because static methods are not polymorphic. So the following will happen: Animal.foo(); // … Read more

Overriding vs method hiding [duplicate]

Consider: public class BaseClass { public void WriteNum() { Console.WriteLine(12); } public virtual void WriteStr() { Console.WriteLine(“abc”); } } public class DerivedClass : BaseClass { public new void WriteNum() { Console.WriteLine(42); } public override void WriteStr() { Console.WriteLine(“xyz”); } } /* … */ BaseClass isReallyBase = new BaseClass(); BaseClass isReallyDerived = new DerivedClass(); DerivedClass isClearlyDerived … Read more