abstract 한정자를 포함하는 클래스는 추상 클래스이며, 추상 클래스는 인스턴스 객체를 생성할 수 없습니다. 추상 메소드를 포함하는 클래스는 추상 클래스로 정의되어야 하며, 추상 클래스 클래스의 메소드는 추상일 필요는 없습니다. 추상 클래스에 정의된 추상 메서드는 구체적인 하위 클래스에서 구현되어야 하므로 추상 생성자나 추상 정적 메서드가 있을 수 없습니다. 서브클래스가 추상 상위 클래스의 모든 추상 메소드를 구현하지 않는 경우 서브클래스도 추상 유형으로 정의되어야 합니다.
인터페이스는 추상 클래스의 특별한 경우라고 할 수 있으며 인터페이스의 모든 메서드는 추상이어야 합니다. 인터페이스의 메서드 정의는 기본적으로 public abstract 형식이고, 인터페이스의 멤버 변수 형식은 기본적으로 public static final입니다.
두 단어의 문법적 차이점을 비교해 보겠습니다 .
1. 추상 클래스에는 생성자가 있을 수 있지만 인터페이스에는 생성자가 있을 수 없습니다.
2. 추상 클래스에는 일반 멤버 변수가 있을 수 있지만 인터페이스에는 일반 멤버 변수가 없습니다.
3. 추상 클래스에는 추상이 아닌 일반 메서드가 포함될 수 있습니다. 인터페이스의 모든 메서드는 추상이어야 하며 비추상 일반 메서드가 있을 수 없습니다.
4. 추상 클래스에 있는 추상 메소드의 액세스 유형은 공개, 보호 및 (기본 유형일 수 있습니다.
Eclipse에서는 오류가 보고되지 않지만 작동해서는 안 됩니다. 그러나 인터페이스의 추상 메소드는 공개 유형만 가능하며 기본값은 공개 추상 유형입니다.
5. 추상 클래스에는 정적 메서드가 포함될 수 있지만 인터페이스에는 정적 메서드가 포함될 수 없습니다.
6. 추상 클래스와 인터페이스 모두 정적 멤버 변수를 포함할 수 있습니다. 추상 클래스의 정적 멤버 변수에 대한 액세스 유형은 임의적일 수 있지만 인터페이스에 정의된 변수는 public static final 유형만 가능하며 기본값은 public static final 유형입니다.
7. 클래스는 여러 인터페이스를 구현할 수 있지만 추상 클래스는 하나만 상속할 수 있습니다.
응용 프로그램에서 두 가지의 차이점에 대해 이야기해 보겠습니다 .
인터페이스는 시스템 아키텍처 설계 방법에서 더 많은 역할을 하며 주로 모듈 간의 통신 계약을 정의하는 데 사용됩니다. 추상 클래스는 코드 구현에서 역할을 하며 코드 재사용을 실현할 수 있습니다. 예를 들어 템플릿 메소드 디자인 패턴은 프로젝트의 모든 서블릿 클래스가 동일한 메소드를 사용하여 권한을 결정하고 기록해야 한다고 가정합니다. 그런 다음 모든 서블릿이 이 추상 기본 클래스를 상속하도록 추상 기본 클래스를 정의할 수 있습니다. 추상 기본 클래스의 서비스 메서드에서 권한 판단, 액세스 로그 기록 및 예외 처리 코드가 완료됩니다. 해당 비즈니스 로직 코드만 완성하세요. 의사 코드는 다음과 같습니다.