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

Anonim

추상 클래스와 인터페이스 in Java

Java에서 추상 클래스와 인터페이스의 차이점을 이해하려면 무엇보다 먼저 각각을 독립적으로 이해하는 것이 중요합니다. Java의 추상 클래스는 일련의 공통된 특징을 가진 하위 클래스 선언에 사용됩니다. 추상 클래스의 공통적 인 사용은 사실상 추상 클래스를 확장 할 수있는 다른 클래스의 수퍼 클래스입니다. 추상 키워드는 추상 클래스의 선언에 사용됩니다. 다른 클래스와 마찬가지로 추상 클래스에는 클래스가 수행 할 수있는 메서드와 특성을 설명하는 필드가 있습니다. 추상적 인 클래스의 단순한 선언에 의해, 클래스는 시작될 수 없다.

Java 인터페이스는 프로토콜과 동일시 될 수 있습니다. 관련이없는 객체의 상호 작용을 용이하게하는 사전 설정되고 동의 된 동작을 나타냅니다. 사용자에 따라 인터페이스는 구현되는 여러 동작에 대한 키를 보유합니다. 따라서 인터페이스는 생산자와 소비자 사이의 링크 역할을합니다. 따라서 Java의 인터페이스는 선언을 계속할 수있는 빈 본문을 포함하는 메서드 그룹입니다. 클래스를 Java 인터페이스에 노출하면 클래스의 예상되는 동작이 인터페이스의 모든 메소드 구현이라는 것을 의미합니다.

차이점

우선, 추상 클래스는 인터페이스에 사용 된 정적 필드와 최종 필드가 아닌 정적 또는 최종 필드를 허용합니다. 인터페이스에는 구현 코드를 사용할 수 없으며 추상 클래스에서 구현 코드가 사용될 수 있습니다. 추상 클래스에서 구현 된 구현 코드는 구현 된 메소드의 일부 또는 전부를 가질 수 있습니다. 기본적으로 인터페이스의 모든 메소드는 "추상"입니다. "

Public, Protected, Private 또는 none과 같이 다양 할 수있는 추상 클래스의 메서드 또는 멤버에 대해서도 가시성을 사용할 수 있습니다. 반면에 인터페이스의 가시성은 공개 모드의 한 가지 모드로 미리 설정할 수 있습니다. ' "

추상 클래스는 자동으로 객체 클래스를 상속받습니다. 이것은 사실상 clone () 및 equals ()와 같은 메서드가 포함되어 있음을 의미합니다. 인터페이스에서 객체 클래스의 상속은 불가능합니다. 다음으로, 추상 클래스는 생성자를 가질 수 있지만 인터페이스에는 가질 수 없습니다. 자바의 인터페이스는 하나의 수퍼 클래스 만 가질 수 있기 때문에 다중 상속의 구현과 함께 매우 중요한 기능을 가지고있다. 하나의 수퍼 클래스 만 존재할 수 있지만, 인터페이스 수에 관계없이 구현 될 수 있습니다. 추상 클래스에서 다중 상속을 가질 수는 없습니다.성능면에서, 인터페이스는 추상적 클래스와 달리 구현이 느려지는 경향이 있는데 그 이유는 주로 클래스에서 해당 메소드를 찾는 추가적인 방향 때문입니다. 그러나 차이는 지속적으로 업그레이드되고있는 최신 Java 가상 머신으로 인해 느려졌습니다.

인터페이스에 메소드를 추가하려면 특정 인터페이스를 구현하는 모든 구현 클래스를 추적해야합니다. 또는 여분의 메소드를 가질 수 있도록 인터페이스를 확장 할 수 있습니다. 추상 클래스를 다루는 경우에는 메서드의 기본 구현을 추가하면됩니다. 코드는 계속 작동합니다. 추상 클래스와 인터페이스 간에는 차이점이 있으므로 경쟁자가 아니라는 점에 유의해야합니다. 그러나 여기서 언급 한 차이점은 서로 보완하는 역할을합니다.

요약

추상 클래스 필드는 정적 테이블과 최종 테이블을 가진 인터페이스와는 반대로 정적 또는 최종 테이블은 아니다. 추상 클래스에서 사용할 수있는 동안 구현 코드를 인터페이스에서 사용할 수 없습니다. 인터페이스 가시성은 추상적 인 클래스 가시성이 다를 수있는 동안에 만 공개 될 수 있습니다.

추상 클래스는 자동으로 객체 클래스를 상속 받지만 인터페이스에서는 불가능합니다.

추상 클래스는 구현시 인터페이스보다 빠릅니다.