자바(Java)/자바기초
[자바기초.014] is-a & has-a 관계
긱펀
2024. 3. 14. 19:12
반응형
[자바기초.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
반응형