반응형
[자바기초.014] is-a & has-a 관계
[1] is - a 관계(relationship)
- is-a 관계는 ~이다 라는 뜻으로 아래와 같은 예시로 이해할 수 있다.
- "사람은 동물이다", "강아지는 동물이다"
- is-a 관계는 상속(Inheritance)으로 코딩하는 것이 효율적이다.
[2] has - a 관계(relationship)
- has-a 관계는 ~을 가지고 있다 라는 뜻입니다.
- has-a 관계는 상속을 사용하지 않고 다른 클래스의 field나 method 등을 가져와서 사용한다.
[3] 예제 코드로 is-a & has-a 관계 이해하기
Course, Student, Apcourse 라는 3개의 클래스를 코딩한 아래의 예제 코드를 보세요. 그리고 이 3개 클래스의 관계는 아래 그림과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import java.util.*; class Student { private String name; private int id; } class Course { private String title; private ArrayList<Student> roster; // has-a } public class APcourse extends Course // is-a { private String APexamDate; public static void main(String[] args) { APcourse csa = new APcourse(); System.out.print("Is an APcourse a Course? "); System.out.println(csa instanceof Course); } } | cs |
- 위 코드에서 보면, Course 클래스는 Student 클래스의 ArrayList를 가지고(has-a)있습니다.
- 그래서 Course와 Student는 has-a 관계로서, 상속으로 처리하지 않았습니다.
- 하지만 APcourse는 Course와 is-a 관계라서 상속으로 처리되어 있습니다.
[예시 문제]
728x90
반응형
'자바(Java) > 자바기초' 카테고리의 다른 글
[자바기초.017] super 키워드 (0) | 2024.03.15 |
---|---|
[자바기초.015] 오버라이딩(Overriding) (0) | 2024.03.15 |
[자바기초.013] 상속과 생성자 (0) | 2024.03.13 |
[자바기초.012] 상속(Inheritance) (0) | 2024.03.13 |
[자바기초.011] 배열과 리스트 비교(Array vs List) (0) | 2024.03.13 |
댓글