반응형

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프로젝트를 할 때는 사용할 일이 극히 적지만

알아두시면 도움이 될 수 있습니다.

반응형

+ Recent posts