I know abstract classes are created when you don't know in advance how the method is going to be implemented or how the logic should work beforehand, but why would you create a method that you won't be using or won't be of use to your CURRENT program?

And interface has almost the same definition, but the question is why should a programmer create them in the first place if they don't perform anything?