I was reading up on Polymorphism and after some searching I was confused about about the difference of compile-time and run-time polymorphism.
Lets say i have a class ABC and one other class that extends ABC, class DEF like so:
class ABC{
    public void myMethod(){
    System.out.println("Overridden Method");
   }
}
public class DEF extends ABC{
    public void myMethod(){
    System.out.println("Overriding Method");
    }
}
public static void main(String args[]){
   ABC obj = new DEF();
   obj.myMethod();
   }
}
If we want to be able to replace a class with another class, which performs the same task but in a different way without having too recompile the class that calls them, Is method overriding the way or method overloading?
 
     
    