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