Developer/JAVA

JAVA , 클래스간의 관계 : use , has, is

단님 2024. 8. 6. 01:34
728x90

클래스가 클래스를 사용하는 방법은

모듈화 되어있는 클래스들을 조립하는 방법을 말한다.

 

new 연산자를 통해 사용하는 방법이 있는데 ,

참조 변수를 선언하여 사용하는 방법이 있었고, 

메서드의 인자를 통해 사용하는 방법이 있었다.

 

 

인자를 통해 전달 받은 것을 사용만을 위한 관계로 , use 의 관계라고 할 수 있다.

인스턴스를 정의하여 사용하는 것을 사용자 클래스와 사용되어지는 클래스의 관계를 has 관계라고 한다.

하나의 클래스가 다른 클래스를 상속하여 확장한 클래스와 부모 클래스간의 관계를 is 관계, 상속관계라고 한다.

-> 아래서 좀 더 자세히 보겠다.

 

상속의 경우.

extends 는 상속한다는 의미로 사용되어지는데 , 아래 표를 보면 extends라는 단어를 사용하는 이유를 할 수있다.

부모 Car 클래스를 상속받아 SportsCar 라는 서브클래스를 만들었는데 , 

Car 에는 speed 라는 변수가 있었다면 , 그대로 SportsCar에서도 변수를 사용 할 수 있고,

더나아가 SportsCar 에 따로 turbo 라는 변수 정의를 한다면 Car에서 더 나아가 확장된 클래스라고도 볼 수 있겠다.

 

 상속의 장점

1. 상속을 통해 기존 클래스의 필드와 메소드를 재사용 할 수 있다.

2. 기존 클래스를 일부 변경할 수 있다.(오버라이딩)

3.상속은 이미 작성된 검증된 소프트웨어를 재사용 하면서 , 신뢰성있는 소프트 웨어를 손쉽게 개발 유지보수를 할 수있다.

4. 코드의 중복을 줄일 수 있다.

 


use 관계
= 사용 관계

 

 

	static Car car = new Car();
	static void myCar(Car car) {
		car.hpowerUp();
		System.out.println("use관계 테스트(car.speed) : " + car.speed);
	}

 

인자를 통해 전달된 클래스 간의 관계를 사용관계라고 하며,

Car는 사용되어지고 , myCar는 사용하고 있는 use의 관계이다.

 


has 관계
= 포함관계 , 집합관계
package j07_classExtends;

import j05_classMethod.Car;

public class Ex01_ClassToClass {
	
	static Car car = new Car();
	public static void main(String[] args) {
		

	}

}

 

Ex01_ClassToClass , Car 의 관계가 has 관계다.

Ex01_ClassToClass 이 클래스가 Car 클래스를 import 하여 포함 하고 있다.

 

 

상속관계는 분량의 조절 실패로 다음번에 살펴보겠다.