Java

[Java] 객체 타입 변환의 필요성

suesoo 2023. 7. 24. 15:54
타입 변환(Type Conversion)

- 하나의 타입을 다른 타입으로 바꾸는 것이 '타입 변환' 

- 자바에서 타입변환은 메모리에 할당받은 크기가 작은 타입에서 큰 타입으로 타입변환은 생략가능

- 메모리에 할당된 크기가 큰 타입에서 작은 타입으로 타입변환 될 때 데이터 손실 발생 ( 컴파일 오류 )

 

 

타입 변환의 종류

1. 묵시적 타입 변환 ( 자동 타입 변환)

-  클래스의 변환은 상속 관계에 있는 클래스 사이에서 발생

- 자식은 부모 타입으로 ( 자동 타입변환 가능)

- 부모 타입변환 이후 부모 클래스에 선언된 필드 메서드 접근 가능

- 메소드가 자식 클래스에서 재정의된다면 자식 클래스 메서드로 덮어쓰기 

 

1 - 1. 부모 클래스 정의

 

1 - 2. 부모 클래스 정의

 

1 - 3. 실행 클래스 ( 자식 클래스 -> 부모 클래스로 형변환)

- 자식 클래스에서 부모 클래스로 자동 타입변환 되어 부모와 동일하기 때문에 자식 클래스의 child.eat() 메서드는 사용불가

 

2. 명시적 타입 변환 ( 강제 타입 변환)

- 부모 타입을 자식 타입으로 변환( 자식 타입이 부모 타입으로 자동 타입변환 후만 가능!)

- 다시 자식클래스이 메서드나 필드를 사용하기 위해 사용

 

💡객체 타입변환의 필요성

다형성

- 하나의 타입으로 여러 객체 사용가능

- 다형성 구현을 위해 필드,메소드 매개변수 등 자동타입 변환을 사용한다.

- 매개값을 다양화하기 위해 매개변수에 자식 객체를 지정하고 사용한다.

 

부모 클래스 정의
자식 클래스 정의
메소드 매개변수 타입으로 자식객체 사용

출력값

- driver에 정의한 drive()메서드의 매개변수(vehicle)가 bus로 자동 타입변환

 

상속과 오버라이딩

- 상속은 클래스를 재상용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다!

- 부모클래스의 수정으로 모든 자식클래스들도 수정되기 때문에 유지보수 시간을 최소화해준다.

- 상속받은 부모클래스의 메서드를 재정의해서 사용하는 것

- 자식클래스에서 오버라이딩을 하면 묵시적인 객체 형 변환 발생 -> 다형성

- 자동으로 부모 객체와 관련된 자식 인스턴스로 변환되어 자식 메서드가 호출된다!

 

부모 클래스 정의

- 자식 클래스에서 부모클래스의 메서드를 재정의하게 되면, 부모 클래스의 메소드가 아니라 자식 객체에서 재정의도니 메소드가 호출

- 자식클래스에서 부모 클래스 메소드를 사용하려면 super. 를 붙여서 사용

 

📌 정리

- 다형성을 구현하기 위해 상속, 오버라이딩, 타입변환은 필수조건이고 다형성을 구현하기 위해서 상속 클래스 구현, 오버라이딩, 업캐스팅하여 객체를 선언, 부모 클래스 객체로 자식 메서드 호출하는 방법이 있다!

 

🔎 객체 타입변환의 필요성은 형변환을 사용하면 한 번의 코드로 다양한 상황을 처리하고 쉽게 변경 추가 가능해서 유지보수와 코드의 유연성 재사용성을 높이고 느슨한 결합으로 클래스 간의 의존성이 낮아져 안정성이 높아진다! 

 

 

 

'Java' 카테고리의 다른 글

[Java] 접근제한자  (0) 2023.07.14
[Java] 기본 자료형 char  (0) 2023.07.07