추상 클래스와 구체적인 클래스의 차이

Anonim

추상 클래스와 구체적인 클래스

자바와 C #과 같은 대중적인 현대 객체 지향 프로그래밍 언어의 대부분은 클래스 기반이다. 클래스 사용을 통해 캡슐화, 상속 및 다형성과 같은 객체 지향 개념을 구현합니다. 클래스는 실제 객체의 추상 표현입니다. 클래스는 메소드 기능의 구현 레벨에 따라 구체적이거나 추상적 일 수 있습니다. 구체적인 클래스는 모든 메서드를 완벽하게 구현합니다. 추상 클래스는 부분적으로 구현 된 메소드를 포함 할 수있는 정규 (구체적) 클래스의 제한된 버전으로 간주 될 수 있습니다. 일반적으로 구체적인 클래스는 (그냥) 클래스라고합니다.

구체적인 수업이란 무엇입니까?

기본 클래스는 구체적인 클래스입니다. 클래스 키워드는 클래스 (예를 들어, 자바)를 정의하는데 사용된다. 그리고 보통은 단순히 클래스라고합니다 (형용사가없는 경우). 구체적인 클래스는 실제 오브젝트의 개념적 표현을 묘사합니다. 클래스에는 속성이라는 속성이 있습니다. 속성은 전역 변수와 인스턴스 변수로 구현됩니다. 클래스의 메소드는 이러한 클래스의 동작을 나타내거나 정의합니다. 클래스의 메소드와 속성을 클래스의 멤버라고합니다. 일반적으로 캡슐화는 속성을 비공개로 만들고 해당 속성에 액세스하는 데 사용할 수있는 공용 메소드를 작성하여 수행됩니다. 객체는 클래스의 인스턴스입니다. 상속을 통해 사용자는 다른 클래스 (수퍼 클래스라고 함)에서 클래스 (하위 클래스라고 함)를 확장 할 수 있습니다. 다형성 (polymorphism)은 프로그래머가 수퍼 클래스의 객체 대신에 클래스의 객체를 대체 할 수있게합니다. 일반적으로 문제 정의에서 발견되는 명사는 프로그램의 클래스가됩니다. 마찬가지로 동사도 방법이됩니다. public, private 및 protected는 클래스에 사용되는 일반적인 액세스 한정자입니다.

추상 클래스 란 무엇입니까? 추상 클래스는 Abstract 키워드 (예를 들어, Java)를 사용하여 선언된다. 일반적으로 Abstract Base Classes (ABC)라고도하는 추상 클래스는 인스턴스화 할 수 없습니다 (해당 클래스의 인스턴스를 만들 수 없음). 따라서 추상 클래스는 프로그래밍 언어가 상속 (클래스 확장으로 하위 클래스를 만드는 기능)을 지원하는 경우에만 의미가 있습니다. 추상 클래스는 일반적으로 구현의 일부 또는 전부가없는 추상 개념 또는 엔티티를 나타냅니다. 따라서 추상 클래스는 하위 클래스가 파생 된 상위 클래스의 역할을 수행하므로 하위 클래스가 상위 클래스의 불완전한 기능을 공유하고 기능을 추가하여 완성합니다.

추상 클래스는 추상 메소드를 포함 할 수 있습니다. abstract 클래스를 확장하는 서브 클래스는 이러한 (상속 된) Abstract 메서드를 구현할 수 있습니다.자식 클래스가 이러한 추상 메서드를 모두 구현하면 구체적인 클래스가됩니다. 그러나 그렇지 않으면 하위 클래스도 Abstract 클래스가됩니다. 이것이 의미하는 바는, 프로그래머가 클래스를 초록으로 지명 할 때, 클래스는 불완전 할 것이고 상속하는 서브 클래스에 의해 완성 될 필요가있는 요소를 가질 것이라고 말하는 것입니다. 이는 두 프로그래머간에 계약을 생성하는 좋은 방법이며 소프트웨어 개발 작업을 단순화합니다. 상속받을 코드를 작성하는 프로그래머는 메소드 정의를 정확히 따라야합니다 (물론 자신의 구현을 가질 수 있습니다).

Abstract Class와 Concrete Class의 차이점은 무엇입니까?

추상 클래스는 보통 부분적으로 또는 전혀 구현되지 않습니다. 한편, 구체적인 클래스는 항상 해당 동작을 완전히 구현합니다. 구체적인 클래스와 달리 추상 클래스는 인스턴스화 할 수 없습니다. 따라서 추상 클래스는 유용하게 만들기 위해 확장되어야합니다. 추상 클래스는 추상 메소드를 포함 할 수 있지만 구체적인 클래스는 포함 할 수 없습니다. 추상 클래스가 확장되면 모든 메소드 (추상 및 구체적)가 상속됩니다. 상속 된 클래스는 모든 메서드를 구현할 수 있습니다. 모든 추상 메소드가 구현되지 않으면 해당 클래스도 추상 클래스가됩니다.