- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Differences between abstract class and interface in Java
In Java, abstraction is achieved using Abstract classes and interfaces. Both contains abstract methods which a child class or implementing class has to implement. Following are the important differences between abstract class and an interface.
Sr. No. | Key | Abstract Class | Interface |
---|---|---|---|
1 | Supported Methods | Abstract class can have both an abstract as well as concrete methods. | Interface can have only abstract methods. Java 8 onwards, it can have default as well as static methods. |
2 | Multiple Inheritance | Multiple Inheritance is not supported. | Interface supports Multiple Inheritance. |
3 | Supported Variables | final, non-final, static and non-static variables supported. | Only static and final variables are permitted. |
4 | Implementation | Abstract class can implement an interface. | Interface can not implement an interface, it can extend an interface. |
5 | Keyword | Abstract class declared using abstract keyword. | Interface is declared using interface keyword. |
6 | Inheritance | Abstract class can inherit another class using extends keyword and implement an interface. | Interface can inherit only an inteface. |
7 | Inheritance | Abstract class can be inherited using extends keyword. | Interface can only be implemented using implements keyword. |
8 | Access | Abstract class can have any type of members like private, public. | Interface can only have public members. |
Example of Abstract Class vs Interface
public class JavaTester { public static void main(String args[]) { Animal tiger = new Tiger(); tiger.eat(); Cat lion = new Lion(); lion.eat(); } } interface Animal { public void eat(); } class Tiger implements Animal { public void eat(){ System.out.println("Tiger eats"); } } abstract class Cat { abstract public void eat(); } class Lion extends Cat{ public void eat(){ System.out.println("Lion eats"); } }
Output
Tiger eats Lion eats
Advertisements