반응형
Java 공부시 가장 애매하고 어려운
다형성의 개념 정리와 형변환을 알아보겠습니다.
다형성은 무엇인가?
- 사전적으로는 다양한 형태의 성질을 갖는 것을 의미함.
- Java에서 객체를 사용할 때 참조 변수를 변경하여 여러 가지 타입의 객체를 참조하는 것
- 다형성 사용시 소스코드를 보다 유기적으로 유연하게 사용할 수 있음
한국에서는 Java가 웹 프로젝트 구성에 집중되어 있어 일반 사용자가 사용하는 빈도는
적으나 Spring 프레임워크나 기타 라이브러리에서 사용하므로 모르는 것보다 알면 도움이 됩니다.
기본 개념
class vihicle {
}
public class train extends vihicle{
}
위와 같이 train 클래스는 vihicle클래스는 상속받아 사용합니다.
train tr = new train();
그리고 이 train 클래스를 사용할 때 보통은 위와 같이 사용합니다.
이는 train 클래스는 tr이라는 참조 변수를 생성하고
new Train()는 메모리에 적재된 해당 객체를 가져오게 됩니다.
하지만 다형성을 이용한다면 다른 형태로도 정의가 가능한데요.
vihicle vh = new train();
위와 같이 vihicle 타입의 참조변수에 train 객체를 할당하는 것이 가능합니다.
두 클래스간에 상속관계가 정립되어 있을 경우 가능하며 train에서는
vihicle의 변수가 메소드를 사용할 수 있습니다.
만약 반대로 정의한다면 위와 같은 에러가 발생합니다.
부모 = 자식 -> 가능
자식 = 부모 -> 불가능
조금 알기 쉽게 설명하면 부모클래스는 자식 클래스를 품을 수 있지만
자식 클래스는 부모 클래스를 품을 수 없다고 생각하시면 편하겠습니다.
다형성 예제 소스
class vihicle {
void run(){
System.out.println("Move");
}
}
class train extends vihicle{
void run2() {
System.out.println("Train Move");
}
}
public class exTest {
public static void main(String[] args) throws Exception {
vihicle vh = new train();
vh.run();
train tr = null;
tr = (train)vh; //형변환
tr.run();
tr.run2();
}
}
위의 예제처럼 Java의 다형성은 어떠한 객체를 참조 및 할당함으로써
형태 및 형질을 바꾸는데에 의의를 두면 되시겠습니다.
Web프로젝트를 할 때는 사용할 일이 극히 적지만
알아두시면 도움이 될 수 있습니다.
반응형
'Dev > Java' 카테고리의 다른 글
[Java] 인터페이스 사용법, 추상클래스 차이점 (0) | 2022.12.15 |
---|---|
[Java] 추상클래스 & 메소드 정의와 사용 예제 (0) | 2022.12.14 |
[Java] 특정 문자 기준으로 자르기 StringTokenizer 사용법 (0) | 2022.12.13 |
[Java] 날짜 String 텍스트 날짜 포맷 변경 (0) | 2022.12.12 |
[Java] 메소드 오버라이딩 사용 예제와 샘플 소스 (0) | 2022.11.17 |