반응형
ch7-3 포함 (compositie) 관계
클래스는 1) 상속 관계와 2) 포함 관계가 있을 수 있다.
c.c.x
c.c.y
코드를 보고 그림을 그릴 줄 알아야 한다.
포함이란?
- 클래스의 멤버로 참조변수를 선언하는 것
- 작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만든다.
ch7-4 클래스 간의 관계 결정하기
언제 상속하고 언제 포함하는지는 어떻게 결정할까?
상속관계 '~은 ~이다. is-a
포함관계 ~은 ~을 가지고 있다. has-a
상속은 여러가지 제약이 많기 때문에, 꼭 필요한 경우만 하고
일반적으로 포함을 사용하는 경우가 대부부 90% 이다.
실습
- 상속 관계인 경우
package ch07;
class MyPoint {
int x;
int y;
}
class Circle extends MyPoint {
int r;
}
public class InheritanceTest {
public static void main(String[] args) {
Circle c = new Circle();
c.x = 2;
c.y = 3;
c.r = 1;
System.out.println(c.x);
System.out.println(c.y);
System.out.println(c.r);
}
}
- 포함 관계인 경우
class Circle {
MyPoint m = new MyPoint();
}
c.m.x와 같은 형태로
그림을 그려보면
m이 또 다른 x, y를 가리키게 된다.
package ch07;
class MyPoint {
int x;
int y;
}
class Circle {
MyPoint m = new MyPoint();
int r;
}
public class InheritanceTest {
public static void main(String[] args) {
Circle c = new Circle();
c.m.x = 1;
c.m.y = 2;
c.r = 3;
System.out.println(c.m.x);
System.out.println(c.m.y);
System.out.println(c.r);
}
}
c가 가리키는 객체의 m에 접근해야 한다.
참조변수의 초기화
참조변수를 선언만 해 놓으면, 즉 객체를 생성하지 않으면
저장 공간이 하나가 된다.
또는 생성자에서 초기화를 해주어야 저장공간이 생긴다.
반응형
'자바의정석' 카테고리의 다른 글
[자바의 정석 - 기초편] ch7-7~9 오버라이딩 (0) | 2022.03.18 |
---|---|
[자바의 정석 - 기초편] ch7-5,6 단일상속, Object클래스 (0) | 2022.03.18 |
[자바의 정석 - 기초편] ch7-1,2 상속 (0) | 2022.03.17 |
자바의 정석 ch06 연습문제(1) [6-13~6-24] (0) | 2022.03.15 |
자바의 정석 ch06 연습문제(1) [6-1~6-12] (0) | 2022.03.11 |