728x90
반응형
toString( ) 과 Object 클래스에 대해서 공부하며 추가적으로 몇가지 알아보았다.
Object 클래스는 모든 클래스의 최상위 클래스로 모든 클래스는 Object 클래스를 상속받는다.
따라서, 당연히 toString( ) 메소드 또한 Object의 상속을 받아 사용된다.
ToStringTest.class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public class ToStringTest { private String name; private int age; private String address; private String tell; private String email; public void showInfo(){ System.out.println("이름 : " + name); System.out.println("나이 : " + age); System.out.println("주소 : " + address); System.out.println("연락처 : " + tell); System.out.println("이메일 : " + email); } // @ <- 이거를 anotation 어노테이션 이라고 한다. // 어노테이션은 개발자의 실수를 미연에 방지해주는 기능이다. // 오버라이딩 문법이 맞는지 검사한다. @Override public String toString() { return "ToStringTest{" + "name='" + name + '\'' + ", age=" + age + ", address='" + address + '\'' + ", tell='" + tell + '\'' + ", email='" + email + '\'' + '}'; } } | cs |
위 그림과 같이 클래스 변수들을 생성한 후 toString을 생성시키면 자동으로 변수들이 체크되며 만들 수 있다.
값으로 출력될 때 String과 int 각각 빈 공간이면 null과 0을 출력한다.
ObjectTest2.class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class ObjectTest2 { public static void main(String[] args) { ToStringTest t1 = new ToStringTest(); String result1 = t1.toString(); System.out.println(result1); System.out.println(t1.toString()); // 객체명을 출력하면 자동으로 객체명 뒤에 // .toString() 이 붙어서 실행된다. System.out.println(t1); } } | cs |
ObjectTest2 클래스로 t1 객체를 생성해 3번의 출력을 해주었다.위 출력문은 모두 같게 나오게 되었고, 조금은(?) 보기 불편한 형태로 나왔다.
toString( ) 메소드를 그럼 왜쓸까?
장점
- 사용하기 편리하다.
- 디버깅이 쉽다
- 객체를 출력하기만 해도 객체가 가지고 있는 모든 정보를 확인할 수 있다.
- 개발자가 직접 호출하지 않아도, 로깅을 하거나 에러메시지를 출력할 때 유용하게 사용 가능하다.
Object 클래스에 대해서 더 깊이 알아보자.
위의 첫 문장에서 Object클래스는 모든 클래스의 부모라고 말하였다.
Object1.class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Object1 { private String name; private int age; public void aaa(){ System.out.println("메소드 실행"); } @Override public String toString() { return "이름 : " + name + ", 나이 : " + age; } } | cs |
ObjectTest1.class
1 2 3 4 5 6 7 8 9 10 | public class ObjectTest1 { public static void main(String[] args) { Object1 o1 = new Object1(); o1.aaa(); String result1 = o1.toString(); System.out.println(result1); } } | cs |
Obejct1 클래스에서 상속받은 aaa( )메소드를 출력한다.
o1.toString( ) 메소드는 이렇게 말하고 있다.
" 클래스 니가 만들었잖아? 그러니까 클래스에 대한 정보를 출력하는 메소드로 내가 toString( ) 메소드를 만들었어. toString( ) 메소드는 내가 제공해줄테니까 니가 알아서 toString( ) 메소드를 오버라이딩해서 정보를 문자열로 원하는대로 표현해봐 ^^ "
따라서 마지막 출력문은 object1 클래스가 가지고 있는 toString( ) 값인 공간이 출력하게된다.
728x90
반응형
'✨ Java > 상속(Inheritance)' 카테고리의 다른 글
자바(JAVA) - 상속(Inheritance) -3 (0) | 2023.07.13 |
---|---|
자바(JAVA) - OverLoding 오버로딩과 Overriding 오버라이딩 (상속) (0) | 2023.02.13 |
자바(JAVA) - 상속(Inheritance) -2 (0) | 2023.02.13 |
자바(JAVA) - 상속(Inheritance) -1 (0) | 2023.02.02 |
댓글