컴포지션은 클래스가 다른 클래스의 인스턴스를 클래스 필드로 가질 수 있는 디자인 기술입니다. 상속은 한 개체가 클래스를 확장하여 부모 개체의 속성과 동작을 획득할 수 있는 메커니즘입니다.
구성 및 상속은 모두 클래스를 연관시켜 코드 재사용성을 제공합니다. 합성을 사용하면 상속 기능도 얻을 수 있습니다. 다음은 차이점입니다.
Sr. 아니요. | 키 | 상속 | 구성 |
---|---|---|---|
1 | 기본 | 상속은 "is-a" 관계입니다. | 구성은 "해야 할 일"입니다. 관계 |
2 | 코드 재사용 | 상속에서 클래스 lass는 하나의 인터페이스만 확장할 수 있으므로 한 클래스에서만 코드를 재사용할 수 있습니다. | 여러 클래스에서 코드를 재사용할 수 있습니다. |
3 | 범위 | 상속은 컴파일 시간에 기능을 제공합니다. | 구성은 런타임에 쉽게 달성됩니다. |
4 | 최종 | 최종 클래스의 코드를 재사용할 수 없습니다. | 최종 클래스에서도 코드 재사용 가능 |
5 | 메소드 | 상위 클래스의 public 및 protected 메소드를 모두 노출합니다. | 노출되지 않습니다. 그들은 공개 인터페이스를 사용하여 상호 작용합니다. |
상속의 예
class Animal{ String name="Orio"; } class Dog extends Animal{ String type="Dog"; public static void main(String args[]){ Dog p=new Dog(); System.out.println("Name:"+p.name); System.out.println("Type:"+p.type); } }
작성 예시
public class Student { } public class College { private Student student; public College() { this.student = new Student(); } }