Super Coding Addict
Ch10. 자바 기본 클래스 (1) - Object 클래스 본문
< Object 클래스 >
* Object 클래스
- java.lang.Object 클래스
- 모든 클래스의 최상위 클래스
=> 모든 클래스는 Object 클래스에서 상속을 받음
=> 모든 클래스는 Object 클래스의 메서드를 사용 가능
=> 모든 클래스는 Object 클래스의 일부 메서드 재정의하여 사용 가능 (final로 정의된 메서드들은 재정의 불가)
- 예제
# ToStringTest 클래스
package ch10.object;
class Book{
String title;
String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
@Override
public String toString() {
return author + ", " + title;
}
}
public class ToStringTest {
public static void main(String[] args) {
Book book = new Book("토지", "박경리");
System.out.println(book);
String str = new String("토지");
System.out.println(str); //얘는 왜 문자열 출력? String클래스 안에 toString()메서드가 이미 정의
System.out.println(str.toString());
}
}
--> JDK에 있는 String 클래스는 Object의 toString()메서드를 이미 오버라이딩하여 재정의하였으므로 System.out.println()으로 객체를 출력하면 toString()이 호출된다
--> Book클래스에서 toString()을 재정의하지 않고 Book클래스 객체인 book을 System.out.println()으로 찍어보면, 다음과 같은 형태로 출력된다
=> 이는 Object클래스에서 toString()메서드의 원형이 다음과 같이 정의되어 있기 때문이다.
getClass().getName() + '@' + Integer.toHexString(hashCode())
--> 따라서 Book 클래스 객체인 book은 toString()을 정의해야 하는데, 직접 toString()메서드를 타이핑하여 오버라이딩 하거나, 마우스 오른쪽 버튼 - [Source] - [Override/Implement Methods]에서 toString()을 클릭한 후 오버라이딩하면 된다
'JAVA 문법' 카테고리의 다른 글
Ch10. 자바 기본 클래스 (3) - Object 클래스 (0) | 2021.03.01 |
---|---|
Ch10. 자바 기본 클래스 (2) - Object 클래스 (0) | 2021.03.01 |
Ch12. 내부 클래스(2) (0) | 2021.02.27 |
Ch12. 내부 클래스(1) (0) | 2021.02.27 |
Ch11. 컬렉션 프레임워크 (6) (0) | 2021.02.27 |