has-a 관계(포함) vs is-a 관계(상속)
has-a 관계(포함)
- A has a B = A가 B를 포함한다로 표현 가능한 고나계
- 가장 일반적인 객체간의 관계
- 특정 클래스 내에서 다른 클래스의 인스턴스를 생성하여 해당 인스턴스를 다루는 관계
- 예) 자동차-엔진, 스마트폰-카메라
is-a 관계(상속)
- A is a B = A는 B이다.로 표현 가능한 관계
- 특정 클래스가 다른 클래스를 상속받아 해당 클래스의 멤버를 선언없이 다루는 관계
- 예) 자동차 - 소방차, 핸드폰 - 스마트폰
자동차(Car)와 엔진(Engine)의 관계는? has-a(포함) 관계이다.
=> 자동차는 엔진을 포함한다. = Car has a Engine
class Car {
// 포함관계일 경우 해당 클래스의 인스턴스를 통해 접근 가능한 관계
Engine engine = new Engine();
String modelName = "그랜저";
public void showCarinfo() {
// 자신의 멤버변수에 접근 시 모델명만으로 접근 가능
System.out.println("모델명 : " + modelName);
// 포함관계에 있는 클래스의 멤버에 접근 시 참조변수를 통해 접근 가능
System.out.println("배기량: " + engine.cc);
}
}
소방차와 자동차의 관계는? is-a(상속) 관계이다.
=> 소방차가 자동차이다 = 소방차 is a 자동차
class FireEngine extends Car {
int supplyLimit = 10000; // 급수량
public void showFireEngineInfo() {
// 자신의 멤버에 접근
System.out.println("급수량: " + supplyLimit);
// 부모의 멤버에 접근
System.out.println("모델명: " + modelName);
// 부모와 포함관계인 Engine 객체의 멤버에 접근
System.out.println("배기량: " + engine.cc);
}
}
상속개념에 따라 바로 쓸수있는지의 유무 확인가능
'JAVA' 카테고리의 다른 글
[JAVA] 메서드 오버라이딩(Method Overriding)과 예제 (0) | 2023.09.18 |
---|---|
[JAVA] 상속에서의 생성자 (0) | 2023.09.18 |
[JAVA] 상속(inheritance) (0) | 2023.09.18 |
[JAVA] 싱글톤 디자인 패턴(Singleton Design pattern) (0) | 2023.09.13 |
[JAVA] static 키워드 (0) | 2023.09.13 |