추상 클래스 대 인터페이스: 차이점과 유사점

게시 됨: 2021-06-02

소프트웨어 엔지니어링 인터뷰를 위해 앉아 있는 경우 예상할 수 있는 한 가지 질문은 추상 클래스와 인터페이스의 차이점과 유사점입니다.

추상 클래스와 인터페이스는 객체 지향 프로그래밍의 기본 블록입니다. 이 두 가지 모두를 통해 프로그래머는 OOP의 보다 필수적인 개념 중 하나인 추상화를 구현할 수 있습니다. 추상 클래스와 인터페이스는 모두 추상화 개념을 구현하는 데 사용되지만 둘은 구현이 다르고 사용 사례도 다릅니다. 추상 클래스와 인터페이스는 초보자와 비슷해 보이지만 서로 바꿔서 사용할 수는 없습니다.

이 기사에서 우리는 추상 클래스, 인터페이스의 뉘앙스, 그리고 둘 사이의 유사점과 차이점을 살펴볼 것입니다. 추상 클래스 및 인터페이스는 개념일 뿐이며 선택한 객체 지향 프로그래밍 언어로 구현할 수 있습니다. 일관성을 위해 이 기사에서 개념을 설명하기 위해 사용하는 모든 구문은 Java를 사용합니다.

이 기사가 끝나면 추상 클래스와 인터페이스를 명확하게 구별하고 특정 경우에 구현할 것을 명확하게 구분할 수 있습니다.

목차

인터페이스 – 무엇입니까?

OOP의 인터페이스는 단순히 다양한 시스템 간의 행동 계약으로 이해될 수 있습니다. 이것이 의미하는 바는 인터페이스를 구현하는 모든 클래스가 인터페이스의 모든 메서드에 대해 일부 구현을 제공해야 한다는 것입니다.

인터페이스의 모든 메서드는 공개 및 추상이어야 합니다. 따라서 인터페이스는 "순수 추상" 클래스로도 이해됩니다.

인터페이스의 정의는 다음과 같습니다.

공개 인터페이스 먹기{

public void 씹기();

공개 무효 처리();

}

보시다시피 정의에는 이름 앞에 interface 키워드를 추가하는 것이 포함됩니다 . 또한 이 인터페이스 아래에 두 개의 추상 공용 메서드가 정의되어 있으므로 위의 인터페이스를 구현하는 클래스는 Chewing() 및 digesting()에 대한 구현을 제공해야 합니다. 기능.

이제 추상 클래스가 무엇인지 살펴보고 유사점과 차이점을 더 명확하게 이해할 수 있도록 두 개념을 함께 가져옵니다.

추상 수업 – 무엇입니까?

추상 키워드 선언에서 항상 추상 클래스를 접두사로 사용합니다. 또한 추상 클래스는 파생된 비 추상 클래스에 대해 생성된 지침 역할을 합니다. 그런 의미에서 선언에 최소한 하나의 추상 메서드가 있어야 하며 비추상 메서드에 대한 적절한 구현도 제공해야 합니다.

추상 클래스의 정의는 다음과 같습니다.

공개 추상 클래스 먹기{

공개 무효 getReady(){

System.out.println("식사 준비 완료");

}

공개 추상 무효 시작();

공개 추상 무효 stop();

}

추상 클래스의 정의에서 볼 수 있듯이 getReady() 함수는 추상이 아닌 함수이고 start(); 그리고 stop(); 기능은 추상적입니다.

추상 클래스를 구현할 때 알아야 할 몇 가지 규칙이 있습니다.

  • 추상 클래스는 인스턴스화할 수 없습니다. 즉, 추상 클래스에서 객체를 만들 수 없습니다.
  • 추상 클래스를 확장할 자식 클래스는 추상 클래스에 설명된 모든 추상 메서드를 구현해야 합니다. 자식 클래스가 모든 추상 메서드를 구현하지 않는 경우 자식 클래스도 추상 클래스로 선언해야 합니다.

이제 인터페이스와 추상 클래스의 기본 사항이 있으므로 차이점, 유사점 및 언제 어떤 접근 방식을 사용해야 하는지에 대해 이야기해 보겠습니다.

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

인터페이스 내부에 선언된 모든 메서드는 암시적으로 공개 및 추상입니다. 반면 추상 클래스는 부분, 공개, 정적, 보호 등의 메서드에 대한 모든 종류의 수정자를 가질 수 있습니다.

또한 모든 사용자 정의 클래스는 둘 이상의 인터페이스를 구현할 수 있습니다. 그러나 추상 클래스는 하나만 구현할 수 있습니다. 인터페이스와 추상 클래스 모두 메서드와 변수를 가질 수 있지만 둘 다 인스턴스화할 수 없습니다. 인터페이스 내에서 선언된 모든 변수는 최종적입니다. 그러나 추상 클래스에서 선언된 변수는 최종이 아닐 수 있으며 사용자 정의 클래스에서 수정할 수 있습니다.

다음은 추상 클래스와 인터페이스 간의 모든 주요 차이점에 대한 요약입니다.

매개변수 추상 클래스 인터페이스
예어 추상 키워드가 사용됩니다. 인터페이스 키워드가 사용됩니다.
변수 유형 최종, 비최종, 정적 및 비정적 변수를 처리할 수 있습니다. 기본적으로 정의된 정적 및 최종 변수만 가질 수 있습니다.
최종 변수 그 안에 선언된 최종 변수가 있을 수도 있고 없을 수도 있습니다. 기본적으로 변수는 final로 선언됩니다.
액세스 수정자 private, public, static 등 모든 수정자를 가질 수 있습니다. public 액세스 한정자만 가질 수 있습니다.
방법의 유형 추상 및 비추상 메서드를 모두 가질 수 있습니다. 추상 메서드만 가질 수 있습니다.
속도 빠른 추가 간접 참조가 필요하므로 느립니다.

추상 클래스 대 인터페이스: 언제 무엇을 선택해야 합니까?

코드에서 일부 구현을 제공하기 위해 기본 클래스가 필요한 경우 추상 클래스가 올바른 방법입니다. 예를 들어, 모든 파생 클래스가 사용할 수 있는 메서드에서 일부 논리적 작업을 수행하기 위해 클래스 내의 몇 가지 변수를 초기화할 수 있습니다. 이러한 시나리오에서는 추상 클래스를 사용하는 것이 가장 좋습니다.

그러나 클래스에 추가 동작을 제공해야 하는 경우 인터페이스를 선택해야 합니다. 실제로 인터페이스와 추상 클래스는 모두 동일한 기능을 제공합니다. 그러나 코딩 표준을 고려할 때 차이점이 나타납니다. 인터페이스는 OOP의 두 가지 중요한 원칙인 추상화 및 다형성을 달성하는 데 도움이 됩니다. 또한 코드를 밀접하게 결합되는 대신 느슨하게 결합된 상태로 유지할 수 있습니다.

이제 인터페이스와 추상 클래스의 사용 사례를 요약해 보겠습니다!

인터페이스는 언제 사용합니까?

인터페이스를 통해 프로그래머는 클래스에 대한 추가 동작 패턴을 구축할 수 있습니다. 이를 통해 누군가가 처음부터 시작하여 원하는 클래스에서 인터페이스를 구현할 수 있습니다. 따라서 인터페이스의 목적은 코드에 추가되어야 하는 부수적인 것입니다. 따라서 클래스에 추가 기능을 제공하고 인터페이스의 메서드를 노출하는 데 신경 쓰지 않는 경우(모든 메서드가 공개되므로) 인터페이스 구현을 진행해야 합니다.

추상 클래스는 언제 사용합니까?

인터페이스와 달리 추상 클래스는 훨씬 더 많은 구조를 제공합니다. 추상 클래스는 일부 메서드의 기본 구현과 함께 제공되며 추상 클래스를 완전히 구현하기 위한 유용한 도구도 제공합니다. 추상 클래스를 사용하여 관련 클래스 집합에 일부 공통 기능을 제공하는 동시에 기본 메서드 구현을 위한 충분한 공간을 남겨두어야 합니다.

세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론적으로

추상화는 OOP의 중요한 구성 요소이며 추상 클래스와 인터페이스를 사용하면 코드에서 어느 정도 추상화를 달성할 수 있습니다. 그러나 장단점을 모른 채 서로 바꿔서 사용하는 것은 실수이며 코드(그리고 결국에는 소프트웨어)에 버그가 있고 랙이 생길 수 있습니다.

이 기사가 일부 구문 지식과 함께 추상 클래스와 인터페이스 간의 중요한 차이점과 구현 위치를 이해하는 데 도움이 되었기를 바랍니다.

Abstract Classes and Interfaces 에 대해 더 자세히 알고 싶으시다면 upGrad & IIIT-B의 풀스택 소프트웨어 개발 이그 제 큐 티브 PG 프로그램을 확인하십시오.이 프로그램은 일하는 전문가를 위해 설계되었으며 500 시간 이상의 엄격한 교육, 9 개 이상의 프로젝트 및 과제를 제공합니다. , IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

뉘앙스에 대해 여전히 혼란스럽다면 아래에 의견을 남겨주세요. 곧 다시 연락드리겠습니다!

Java에서 추상 클래스란 무엇입니까?

추상 클래스는 인스턴스화할 수 없고 상속될 수 없는 클래스입니다. 자체적으로 중요한 작업이 없으며 구체적인 클래스의 슈퍼클래스 역할만 합니다. 전문화를 제공하기 위해서만 사용됩니다. Car 클래스와 그 하위 클래스인 스포츠카 및 해치백의 예를 고려하십시오. 추상 클래스 Car는 모든 하위 클래스의 상위 클래스로 간주될 수 있습니다.

Java에서 추상 클래스를 언제 사용합니까?

추상 클래스의 주요 목적은 유사한 클래스 그룹에 기본 클래스를 제공하는 것입니다. 추상 클래스를 확장하는 모든 클래스는 해당 추상 클래스에 정의된 메서드를 구현해야 합니다. 추상 클래스는 주로 클래스가 구현해야 하는 특정 인터페이스를 정의하는 데 사용됩니다. 추상 클래스는 우리가 메서드를 정의할 수 있는 슈퍼 클래스로 사용될 수 있고 필요한 메서드는 자식 클래스에서 구현될 수 있고 자식 클래스에 의해 상속될 수 있습니다. 추상 클래스를 사용하여 자식 클래스에서 사용할 수 있는 공통 코드를 정의할 수 있으므로 더 효율적입니다.

Java에서 추상 클래스와 인터페이스의 차이점은 무엇입니까?

추상 클래스와 인터페이스는 클래스가 구현할 메서드의 전부는 아니지만 일부만 포함하는 클래스를 정의하는 두 가지 방법입니다. 이 둘은 정적으로 다르며 다르게 달성됩니다. 그러나 동적 사용 측면에서는 동일합니다. 인터페이스는 상수와 추상 메서드 선언만 포함하는 클래스입니다. Java에는 실제 인터페이스 구현이 없습니다. 따라서 인터페이스는 완전히 더미 클래스입니다. 인터페이스는 클래스의 메서드 및 상수 계약을 정의하는 데 사용됩니다. 클래스가 동일한 메서드와 상수를 구현하도록 합니다. 메서드는 추상 클래스 또는 하위 클래스에서 구현할 수 있습니다. 추상 클래스는 추상 메소드를 포함하는 클래스입니다. 서브클래스는 이러한 추상 메소드를 구현합니다. 추상 클래스와 인터페이스를 함께 사용하여 클래스의 특정 계약을 시행할 수 있습니다.