logo

추상 클래스와 인터페이스의 차이점

추상 클래스와 인터페이스는 모두 추상 메소드를 선언할 수 있는 추상화를 달성하는 데 사용됩니다. 추상 클래스와 인터페이스는 모두 인스턴스화할 수 없습니다.

그러나 아래에 제시된 추상 클래스와 인터페이스에는 많은 차이점이 있습니다.

추상 수업상호 작용
1) 추상 클래스는 추상적인 것과 비추상적인 것이 있다 행동 양식.인터페이스는 다음을 가질 수 있습니다 추상적인 것만 행동 양식. Java 8부터 가능합니다. 기본 및 정적 방법 또한.
2) 추상클래스 다중 상속을 지원하지 않습니다 .상호 작용 다중 상속을 지원합니다 .
3) 추상클래스 최종, 비최종, 정적 및 비정적 변수를 가질 수 있습니다. .인터페이스에는 정적 및 최종 변수만 .
4) 추상클래스 인터페이스 구현을 제공할 수 있습니다. .상호 작용 추상 클래스 구현을 제공할 수 없습니다. .
5) 추상 키워드 추상 클래스를 선언하는 데 사용됩니다.그만큼 인터페이스 키워드 인터페이스를 선언하는 데 사용됩니다.
6) 안 추상 수업 다른 Java 클래스를 확장하고 여러 Java 인터페이스를 구현할 수 있습니다.상호 작용 다른 Java 인터페이스만 확장할 수 있습니다.
7) 안 추상 수업 'extends' 키워드를 사용하여 확장할 수 있습니다.상호 작용 '구현'이라는 키워드를 사용하여 구현할 수 있습니다.
8) 자바로 추상 수업 private, protected 등과 같은 클래스 멤버를 가질 수 있습니다.Java 인터페이스의 멤버는 기본적으로 공개됩니다.
9) 예:
공개 추상 클래스 Shape{
공개 추상 무효 draw();
}
예:
공개 인터페이스 Drawable{
무효 그리기();
}

간단히 말해서 추상 클래스는 부분 추상화(0~100%)를 달성하는 반면 인터페이스는 완전 추상화(100%)를 달성합니다.

Java의 추상 클래스 및 인터페이스 예

인터페이스와 추상 클래스를 모두 사용하는 간단한 예를 살펴보겠습니다.

 //Creating interface that has 4 methods interface A{ void a();//bydefault, public and abstract void b(); void c(); void d(); } //Creating abstract class that provides the implementation of one method of A interface abstract class B implements A{ public void c(){System.out.println('I am C');} } //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
지금 테스트해보세요

산출:

 I am a I am b I am c I am d