In Java, abstraction is achieved using Abstract classes and interfaces. An abstract class contains abstract methods which a child class. Following are the important differences between abstract class and a concrete class.
| Sr. No. | Key | Abstract Class | Concrete Class |
|---|---|---|---|
| 1 | Supported Methods | Abstract class can have both an abstract as well as concrete methods. | A concrete class can only have concrete methods. Even a single abstract method makes the class abstract. |
| 2 | Instantiation | Abstract class can not be instantiated using new keyword. | Concrete class can be instantiated using new keyword. |
| 3 | Abstract method | Abstract class may or may not have abstract methods. | Concrete clas can not have an abstract method. |
| 4 | Final | Abstract class can not be declared as a final class. | Concrete class can be declared final. |
| 5 | Keyword | Abstract class declared using abstract keyword. | Concrete class is not having abstract keyword during declaration. |
| 6 | Inheritance | Abstract class can inherit another class using extends keyword and implement an interface. | Interface can inherit only an inteface. |
| 7 | Interface | Abstract class can not implement an interface alone. A child class is needed to be able to use the interface for instantiation. | Interface can be implemented easily. |
Example of Abstract Class vs Concrete Class
JavaTester.java
public class JavaTester {
public static void main(String args[]) {
Cat lion = new Lion();
lion.eat();
}
}
abstract class Cat {
abstract public void eat();
}
class Lion extends Cat{
public void eat(){
System.out.println("Lion eats");
}
}Output
Lion eats