상세 컨텐츠

본문 제목

상속과 구성

자바 기초

by 코딩초보 신성민 2020. 4. 28. 10:17

본문

 상속 대 구성

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

상속이란 무엇입니까?

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

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

구성이란 무엇입니까?

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

상속과 구성의 차이점은 무엇입니까?

상속과 구성은 두 가지 OOP 개념이지만 프로그래머가 달성 할 수있는 방식은 상당히 다릅니다. 상속은 클래스가 클래스를 확장하여 클래스와 속성 및 동작을 상속하는 기능이며, 컴포지션은 클래스가 다른 클래스의 객체를 멤버 데이터로 포함하는 기능입니다. 클래스가 확장되면 모든 공용 및 보호 된 속성 / 동작을 상속하며 하위 클래스가 해당 동작을 재정의 할 수 있습니다. 그러나 클래스가 다른 클래스에 포함 된 경우 컨테이너는 포함 된 동작을 변경하거나 추가 할 수 없습니다. 상속은 OOP에서 "is-a"관계를 나타내는 반면, Composition은 "has-a"관계를 나타냅니다.

'자바 기초' 카테고리의 다른 글

좋은 개발자의 덕목  (0) 2020.04.29
자바 static 키워드  (0) 2020.04.28
자바 생성자  (0) 2020.04.28
자바의 상속.  (0) 2020.04.27
자바 VS 자바스크립트, 엄연히 다르다? (차이점, 핵심 기능 비교)  (0) 2020.04.27

관련글 더보기