java

toString 오버라이딩에 대해

윤만석 2024. 3. 15. 00:42

 

class temp{
	private String str;
	temp(String s){
		str=s;
	}
	
}
public class Main {
	public static void main(String args[]) {
		temp t1=new temp("zz");
		System.out.println(t1.toString());
	}
}
//Devide_And_Conquer.temp@7c30a502

인스턴스의 내용을 print하고싶을때가 있습니다. 그럴때 이렇게 쓰면 내용이 아니라

클래스네임 @ 객체주소 해쉬코드 가 반환됩니다.

 

 

따라서 내용을 출력하고싶을때는

이때 temp 클래스의 toString을 오버라이딩하면됩니다.

1. toString 은 접근지시자가 protected이므로 , public 으로 오버라이딩해야합니다.

 

2. 또한 객체를 출력할때 toString() 매서드를 붙이지 않고, 변수만 출력해도 메서드를 붙인것과 똑같은 값이 출력됩니다.

컴파일러가 객체만 출력할 경우 자동으로 toString()을 붙이고 컴파일하기 때문입니다!

 

class temp{
	private String str;
	temp(String s){
		str=s;
	}
	@Override
	public String toString() {
		return str;
	}
	
}
public class Main {
	public static void main(String args[]) {
		temp t1=new temp("zz");
		
		System.out.println(t1.toString());
        System.out.println(t1); //toString 매서드를 붙이지 않아도
        //자동으로 컴파일러가 toString을 붙히고 컴파일합니다!
	}
}
//zz
//zz

 

'java' 카테고리의 다른 글

제너릭 Generic  (1) 2024.03.15
Array 사용법  (0) 2024.03.13
Object 클래스  (0) 2024.03.12
interface 정리  (0) 2024.03.11
super ? 상속의 규칙  (0) 2024.03.08