IS-A 관계
IS-A는 − 이 개체는 해당 개체의 유형입니다. 상속을 달성하기 위해 extends 키워드가 어떻게 사용되는지 봅시다.
public class Animal { } public class Mammal extends Animal { } public class Reptile extends Animal { } public class Dog extends Mammal { }
이제 IS-관계를 고려하면 다음과 같이 말할 수 있습니다.
- 포유류는 동물이다
- 파충류 IS-A 동물
- 개는 포유류다
- 따라서 개는 동물이기도 합니다.
extends 키워드를 사용하면 하위 클래스는 상위 클래스의 개인 속성을 제외한 상위 클래스의 모든 속성을 상속할 수 있습니다.
인스턴스 연산자를 사용하여 Mammal이 실제로 Animal임을 확신할 수 있습니다.
예시
class Animal { } class Mammal extends Animal { } class Reptile extends Animal { } public class Dog extends Mammal { public static void main(String args[]) { Animal a = new Animal(); Mammal m = new Mammal(); Dog d = new Dog(); System.out.println(m instanceof Animal); System.out.println(d instanceof Mammal); System.out.println(d instanceof Animal); } }
이것은 다음과 같은 결과를 생성합니다 -
출력
true true true
HAS-A 관계
이러한 관계는 주로 사용법을 기반으로 합니다. 이것은 특정 클래스가 특정 것을 HAS-하는지 여부를 결정합니다. 이 관계는 코드의 중복과 버그를 줄이는 데 도움이 됩니다.
예를 살펴보겠습니다 -
예시
public class Vehicle{ } public class Speed{ } public class Van extends Vehicle { private Speed sp; }
이것은 Van HAS-A Speed 클래스를 보여줍니다. Speed에 대해 별도의 클래스를 가짐으로써 속도에 속하는 전체 코드를 Van 클래스에 넣을 필요가 없으므로 여러 애플리케이션에서 Speed 클래스를 재사용할 수 있습니다.
객체 지향 기능에서 사용자는 실제 작업을 수행하는 객체에 대해 신경 쓸 필요가 없습니다. 이를 달성하기 위해 Van 클래스는 Van 클래스의 사용자에게 구현 세부 정보를 숨깁니다. 따라서 기본적으로 사용자는 Van 클래스에게 특정 작업을 수행하도록 요청하고 Van 클래스는 스스로 작업을 수행하거나 다른 클래스에게 작업을 수행하도록 요청합니다.