- 자바프로그래밍에 가장 기본이 되는 클래스들을 포함
- import문 없이 사용 가능
- ex) String클래스, System클래스
- 모든 클래스의 최고 조상
→ Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능
toString() 의 특징
- 인스턴스에 대한 정보를 문자열(String)로 제공
- 오버라이딩 하지 않고 호출할 경우,
public String toString() {
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
Card@6a5fc7f7
- toString()을 오버라이딩 할 때는, 접근제어자를 public으로 설정하자
- Object 클래스에 정의된 toString()의 접근제어자가 위에서 보다시피 public으로 설정되어 있기 때문
- 조상에 정의된 메서드를 자손에서 오버라이딩 할 때는, 조상에 정의된 접근범위보다 같거나 더 넓어야 한다.
- 그러나, 일반적으로 toString()은 인스턴스나 클래스에 대한 정보 또는 인스턴스 변수의 값을 문자열로 변환하여 반환하도록 오버라이딩 되어 있다.
- String클래스의 toString()은 문자열을 반환하도록 오버라이딩 되어 있다.
- Date클래스의 toString()은 날짜,시간을 문자열로 변환하여 반환하도록 오버라이딩 되어 있다.
class Card {
String kind;
int number;
Card() {
this("SPADE", 1);
}
Card(String kind, int number) {
this.kind = kind;
this.number = number;
}
public String toString() {
/**
* String 클래스의 toString()은 문자열을 반환하도록 오버라이딩 되어 있다.
* Object 클래스에 정의된 toString()의 접근 제어자가 public이므로 오버라이딩 할 때의 접근제어자도 public으로 설정
* Card 인스턴스의 kind와 number을 문자열로 반환한다.
*/
return "kind : " + kind + ", number : " + number;
}
}
class CardToString2 {
public static void main(String[] args) {
Card c1 = new Card();
Card c2 = new Card("HEART", 10);
System.out.println(c1.toString());
System.out.println(c2.toString());
// 실행결과
// kind : SPADE, number : 1
// kind : HEART, number : 10
}
}