Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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 31
Archives
Today
Total
관리 메뉴

Super Coding Addict

Ch10. 자바 기본 클래스 (1) - Object 클래스 본문

JAVA 문법

Ch10. 자바 기본 클래스 (1) - Object 클래스

밍응애 2021. 2. 28. 23:33

< 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()을 클릭한 후 오버라이딩하면 된다