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