상속과 합성의 차이

Anonim

상속과 컴포지션

상속 및 합성은 OOP (Object Oriented Programming)에서 발견되는 두 가지 중요한 개념입니다. 간단하게 컴포지션과 상속은 클래스에 추가 속성이나 동작을 제공합니다. 상속은 클래스를 확장하여 부모 클래스에서 속성 및 동작을 상속하는 기능입니다. 반면 컴포지션은 멤버 데이터로 다른 클래스의 객체를 포함하는 클래스의 기능입니다.

상속이란 무엇입니까? 위에서 언급했듯이 상속은 클래스를 확장하여 부모 클래스에서 속성 및 동작을 상속하는 기능입니다. 상속은 기본적으로 새롭게 정의 된 클래스에 의해 기존 클래스의 속성과 동작을 확장함으로써 코드 재사용을 제공합니다. 클래스 A가 B를 확장하면 클래스 B는 부모 클래스 (또는 수퍼 클래스)로, 클래스 A는 자식 클래스 (또는 파생 클래스 / 하위 클래스)라고합니다. 이 예제 시나리오에서 클래스 A는 수퍼 클래스 (B)의 모든 공용 및 보호 속성과 메소드를 상속합니다. 하위 클래스는 부모 클래스에서 상속 된 비헤이비어를 선택적으로 재정의 할 수 있습니다 (새 기능 또는 확장 된 기능 제공).

상속은 OOP에서 "is-a"관계를 나타냅니다. 이것은 본질적으로 A가 B라고도 함을 의미합니다. 즉, B는 특정 실제 세계 엔티티에 대한 일반적인 설명이있는 클래스가 될 수 있지만 A는 특정 전문을 지정합니다. 실제 프로그래밍 문제에서는 Person 클래스를 확장하여 Employee 클래스를 만들 수 있습니다. 이것을 전문화라고합니다. 하지만 먼저 Employee 클래스를 만든 다음 Person 클래스로 일반화 할 수도 있습니다 (즉, 일반화). 이 예에서, 직원은 Person (즉, Employee도 Person 임)의 모든 속성 및 동작을 가지며 일부 추가 기능을 포함 할 수 있습니다 (따라서 Person은 Employee가 아닙니다).

작문이란 무엇입니까?

합성은 클래스가 구성원 데이터로 다른 클래스의 객체를 포함 할 수있는 능력입니다. 예를 들어, 클래스 A는 클래스 B의 객체를 멤버로 포함 할 수 있습니다. 여기서 B에서 정의 된 모든 공용 메소드 (또는 함수)는 클래스 A에서 실행될 수 있습니다. 클래스 A는 컨테이너가되고 클래스 B는 포함 된 클래스가됩니다. 구성은 컨테이너 성이라고도합니다. 이 예에서 클래스 A는 클래스 B로 구성되어 있다고 할 수 있습니다. OOP에서 컴포지션은 "has-a"관계를 나타냅니다. 컨테이너가 포함 된 클래스의 모든 public 메서드를 실행하도록 액세스 할 수는 있지만 추가 기능을 변경하거나 추가 할 수는 없습니다. 실제 프로그래밍 문제에 관해서는, 클래스 TextBox의 객체는 클래스 Form에 포함될 수 있으며 따라서 Form에 TextBox가 포함되어 있다고 말할 수 있습니다 (또는 Form이 TextBox로 구성되어 있음).

상속과 구성의 차이점은 무엇입니까? [999] 상속과 합성은 두 가지 OOP 개념이지만 프로그래머가 달성 할 수있는 것과는 완전히 다릅니다. 상속은 클래스가 속성 및 동작을 확장하여 부모 클래스에서 상속하는 기능이며 컴포지션은 클래스의 다른 클래스의 객체를 구성원 데이터로 포함 할 수있는 기능입니다. 클래스가 확장되면 모든 public 및 protected 속성 / 비헤비어를 상속하며 이러한 비헤이비어는 하위 클래스에 의해 무시 될 수 있습니다. 그러나 클래스가 다른 클래스에 포함되어 있으면 컨테이너는 포함 된 클래스에 동작을 변경하거나 추가 할 수 없습니다. 상속은 OOP에서 "is-a"관계를 나타내는 반면 컴포지션은 "has-a"관계를 나타냅니다.