Edit: the difference between my question and What are the differences between abstract classes, interfaces, and when to use them, What are abstract classes and abstract methods? is that the chosen answers didn't mention about the compiler-warning part. One even mention the re-use of code by inheritance, which is bad practice actually.
I think what I want to know is beyond the language chosen. But, whatsoever, I means the abstract method in Java. From the documentation of Oracle:
An abstract method is a method that is declared without an implementation (without braces, and followed by a semicolon).
But what I really want to know is the real purpose of it, not just the semantic rules.
For me, the purpose is that the compiler will tell me what I need to do in the future. Take Eclipse as an example, when I derive a subclass from a abstract class, Eclipse will help me to add all un-implemented methods by one click.
From another point of view, an abstract method will make the super-class-version method, which may have a basic functionality, no longer available, they're overridden.(I get this conclusion from decorator pattern.)
Still, all of the above is from my intuition. Any advice is appreciated.