Java에서 추상화는 Abstract 클래스와 인터페이스를 사용하여 달성됩니다. 둘 다 자식 클래스 또는 구현 클래스가 구현해야 하는 추상 메서드를 포함합니다. 다음은 추상 클래스와 인터페이스의 중요한 차이점입니다.
Sr. 아니요. | 키 | 추상 클래스 | 인터페이스 |
---|---|---|---|
1 | 지원되는 방법 | 추상 클래스는 추상 메서드와 구체적인 메서드를 모두 가질 수 있습니다. | 인터페이스는 추상 메소드만 가질 수 있습니다. Java 8 이상에서는 기본 메서드와 정적 메서드를 모두 가질 수 있습니다. |
2 | 다중 상속 | 다중 상속은 지원되지 않습니다. | 인터페이스는 다중 상속을 지원합니다. |
3 | 지원되는 변수 | 최종, 비최종, 정적 및 비정적 변수가 지원됩니다. | 정적 및 최종 변수만 허용됩니다. |
4 | 구현 | 추상 클래스는 인터페이스를 구현할 수 있습니다. | 인터페이스는 인터페이스를 구현할 수 없으며 인터페이스를 확장할 수 있습니다. |
5 | 키워드 | 추상 키워드를 사용하여 선언된 추상 클래스입니다. | 인터페이스는 interface 키워드를 사용하여 선언됩니다. |
6 | 상속 | 추상 클래스는 extends 키워드를 사용하여 다른 클래스를 상속하고 인터페이스를 구현할 수 있습니다. | 인터페이스는 인터페이스만 상속할 수 있습니다. |
7 | 상속 | 추상 클래스는 extends 키워드를 사용하여 상속될 수 있습니다. | 인터페이스는 implements 키워드를 사용해야만 구현할 수 있습니다. |
8 | 액세스 | 추상 클래스는 private, public과 같은 모든 유형의 멤버를 가질 수 있습니다. | 인터페이스는 공개 멤버만 가질 수 있습니다. |
추상 클래스와 인터페이스의 예
JavaTester.java
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"); } }
출력
Tiger eats Lion eats