Back Ground

toString이란? 본문

JAVA

toString이란?

Back 2016. 7. 10. 11:50

Object 이란

 

 

 

모든 클래스의 가장 최상위 클래스인 "Object" 클래스

 

 

JAVA에 제공하는 모든 클래스들의 계충 구조로 되어있고, 그 최상위로 올라가면 "Object"이라는 클래스가 존재한다.

 

우리가 일반적으로 생성하는 클래스도 "extends"로 직접 상속하지는 않지만 

자바 컴파일러는 일반 클래스를 "Object"하위 클래스로 자동 설정하게 되어 있습니다.

 

 

 

즉, 자바 라이브러리나 유저가 만든 모든 클래스는 

"Object" 클래스를 부모클래스로 상속 받아서 사용 하게 됩니다.

 

 

 

 

 

toString() 메소드란

 

 

 

"Object"클래스가 가진 메소드 중 "toString"메소드가 있습니다.

물론 "Object" 클래스의 모든 메소드는 모든 클래스가 사용이 가능합니다.

"toString" 메서드는 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드 입니다.

 

 

이렇게 출력해보면 결과값에는 이상한 정보가 담기는데

이 값은 순수 "Object"의 "toString"결과 값입니다. (결국 의미없는 디폴트 값)

 

 

 

 

 

하지만 "String" 클래스나 "File"클래스에서는 "toString"에 메소드를 재정의 하여 의미있는 값을 리턴해 줍니다.

 

 

 

 

 

 

"String" 클래스 객체의 "toString"메소드는 자신이 가진 값을 그대로 리턴해주고,

"File"클래스 객체의 "toString"메소드는 자신이 가진 해당 경로값을 리턴해 주고있습니다.

 

이 두 클래스는 내부에서 "toString"을 재정의해서 사용한 것 입니다.

 

 

 

 

증거로는 이클립스 자동완성 창에서 보여줄 수 있습니다.

 

 

- "String"클래스의 "toString"메소드 상세 설명 -

 

빨간 네모 부분 보면 "Overrides : to String in class Object"라고 써 있는데

오버라이드 즉, 재정의했다는 의미 입니다.

 

 

 

 

 

 

 

 

 

toString() 메소드를 재정의해서 사용

 

 

( 재정의 : 정의되어 있는 변수나 배열 요소가 다시 정의되는 것 )

 

아까전 의미없던 값 "Human"클래스로 재정의 해보겠습니다.

 

콘텍스트 메뉴로 오버라이드할 메소드를 찾을수 있습니다.

 

 

ok를 누르면

 

 

오러라이딩 함수가 생성되는데

이 함수를 재정의 하여 사용하도록 하겠습니다

 

 

빨간 네모처럼 나이를 리턴하도록 만들고

실제로 사용해 보도록 하겠습니다.

 

 

 

 

"Human"클래스의 객체를 생성하여 "toString" 메소드를 사용해 보았습니다.

우리가 재정의 했던 "toString"메소드가 잘 호출 되었음을 출력값을 통해 알 수가 있습니다.

 

 

 

 

 

 

 

toString() 메소드는 자동으로 호출된다


toString 매소드는 자동으로 호출 됩니다.

 

우리가  자주 사용하던 "String" 클래스 객체를 선언하여

"toString"메소드 없이 그냥 객체 자체로 변수에 담긴 내용을 가져와 사용했었습니다.

 

 

 

 

 

 

위 코드를 보시면 "str"이라는 "String"클래스의 객체 입니다.

 

그런데 신기하게도 객체임에도 불구하고

"str"독단적으로 저렇게 사용 되어지고 있습니다.

 

바로 이 지점에서 "toString"이 자동으로 호출 되는 것입니다.

이것을 증명하기 위해서 우리가 구현한 "Human"클래스로 한번 시도 해보겠습니다.

 

 

 

 

 

 

아까 만들었던 소스에서 "toString"만 제거 하였습니다.

출력 결과는 잘나오고 있는걸 확인할수 있습니다.

 

출처: http://blog.naver.com/highkrs/220253206615 모프

 

'JAVA' 카테고리의 다른 글

ModelAndView  (0) 2017.06.01
JVM 메모리 구조  (1) 2017.03.09
JAVA - 배열[]  (0) 2017.02.15
GSON - java 객체(object)를 JSON 표현식으로 변환하는 API  (0) 2016.12.20
오버라이딩/오버로딩  (1) 2016.07.10
Comments