클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것
public class Employee {
int id;
String name;
Address address; //포함
Employee(int id, String name, Address address){
this.id = id;
this.name = name;
this.address = address;
}
void showInfo(){
System.out.println(id + " " + name);
System.out.println(address.city + " " + address.country);
}
public class Address {
String city, country;
Address(String city, String country) {
this.city = city;
this.country = country;
}
public static void main(String[] args) {
Address address1 = new Address("서울","한국");
Address address2 = new Address("파리","프랑스");
Employee e = new Employee(123, "손흥민", address1);
Employee e2 = new Employee(12345, "음바페", address2);
e.showInfo();
e2.showInfo();
}
123 손흥민
서울 한국
12345 음바페
파리 프랑스
city와 country 를 Employee 클래스의 인스턴수 변수로 정의해 주어야 하지만 Address 클래스로 해당 변수들을 묶어준다음 Employee 클래스의 안에서 참조변수를 선언하는 포함관계로 재사용 함.
클래스 간의 관계가 ~은 ~이다 이면 상속, ~은 ~을 가지고 있다 이면 포함관계
포함 - Employee는 Address 이다 (X) Employee는 Address를 가지고있다 (O)
상속 - SportsCar는 Car이다 (O) SportsCar는 Car를 가지고있다 (X) Car를 상위클래스로 하는 상속관계를 맺어주는게 적합