This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Dear Reader, This keyword is used wwhile declaring classes and methods. For eg.
When used with a class, it does NOT allow any instantiations of it. It means you will not be able to create any object for the above class "MyAbstractClass". This is used when you are not sure about the implementation of the class and the class only gets its real meaning when its extended by some other class.
Absract methods are not given any body. They are only declared. Note: I have used a semicolon after the method signature.
The body for the method is defined by any class that extends its class.
Here's an example:
You really don't know what an Animal object looks like. Does it have four legs or four horns. There is no definite meaning for it. So you NEED to subclass it to give it a proper shape such as a Dog. Different Animals have different styles of walking, so we just declare an abstract method for walk() and leave it to the sub-classes to implement a specific style for its class.
Now, there are many rules associated with the "abstract" keyword which you can learn once you understand this concept.
Although the above is a good explanation of the "abstract" keyword in Java, it actually doesn't answer the question at all.
"Abstract data type" -- often abbreviated ADT -- is basically an old-fashioned term for "class". If you know what a Java class is -- especially if you understand it as some data plus some operations on that data -- then you understand what an ADT is.