컴포지션은 클래스가 다른 클래스의 인스턴스를 클래스 필드로 가질 수 있는 디자인 기술입니다. 상속은 한 개체가 클래스를 확장하여 부모 개체의 속성과 동작을 획득할 수 있는 메커니즘입니다.
구성 및 상속은 모두 클래스를 연관시켜 코드 재사용성을 제공합니다. 합성을 사용하면 상속 기능도 얻을 수 있습니다. 다음은 차이점입니다.
| 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();
}
}