Java
[Java] Object 클래스와 메서드
jny0
2023. 2. 27. 14:32
Object 클래스는 모든 클래스의 최상위 클래스로 모든 클래스는 기본적으로 Object 클래스를 상속받는다.
따라서 모든 클래스는 Object 클래스의 메서드를 오버라이딩해서 사용할 수 있다.
1. 객체 문자 정보 toString()
toString()
은 객체를 문자열로 표현한 값을 반환한다.
기본적으로 클래스명@16진수해시코드
로 이루어진 문자 정보이다.
클래스에서 toString()
을 오버라이딩하여 사용할 수 있다.
Car car01 = new Car();
Car car02 = new Car();
System.out.println(car01.toString()); // 실행결과 : Car@15db9742
System.out.println(car02.toString()); // 실행결과 : Car@6d06d69c
class Main {
public static void main(String[] args) {
사람 a사람1 = new 사람("홍길동", 22); // 결과 : 사람 [이름=홍길동, 나이=22]
사람 a사람2 = new 사람("홍길순", 23); // 결과 : 사람 [이름=홍길순, 나이=23]
System.out.println(a사람1);
System.out.println(a사람2);
}
}
class 사람 extends Object {
String 이름;
int 나이;
사람(String 이름, int 나이) {
this.이름 = 이름;
this.나이 = 나이;
}
@Override
public String toString() {
return "사람[이름=" + 이름 + ",나이=" + 나이 + "]";
}
}
2. 객체 비교 equals()
두 개의 객체가 같은지 비교한다
public boolean equals(Object obj) { . . . }
의 형태로 매개변수는 객체이고 true/false를 리턴한다- 논리적으로 동등하다는 의미 : 같은 객체이건 다른 객체이건 상관없이 저장하고 있는 데이터가 동일함
equals()
메서드를 오버라이딩 할 때, 매개값(비교 객체)이 기준 객체와 동일한 타입의 객체인지 먼저 확인해야 한다.
Object 타입의 매개 변수는 모든 객체가 매개값으로 제공될 수 있기 때문에 instanceof
연산자로 기준 객체와 동일한 타입인지 제일 먼저 확인해야 한다.
만약 비교 객체가 다른 타입이라면 equals() 메서드는 false
를 리턴해야 한다.
비교 객체가 동일한 타입이라면 기준 객체 타입으로 강제 타입 변환해서 필드 값이 동일한지 검사한다.
// Object 클래스와 equals
class Main {
public static void main(String[] args) {
사람 a사람1 = new 사람("홍길동", 22);
사람 a사람2 = new 사람("홍길동", 22);
if ( a사람1.equals("ㅋㅋ") )
{
System.out.println("참");
}else {
System.out.println("거짓");
}
if ( a사람1.equals(a사람2) )
{
System.out.println("참1");
}
}
}
class 사람 {
String 이름;
int 나이;
사람(String 이름, int 나이) {
this.이름 = 이름;
this.나이 = 나이;
}
@Override
public boolean equals(Object o) {
if ( o instanceof 사람 == false ) { // 기준 객체와 같은 타입인지 비교
return false;
}
사람 other = (사람)o; // 기준 객체로 강제 형변환
if ( !이름.equals(other.이름) ) {
return false;
}
if ( this.나이 != other.나이 ) {
return false;
}
return true;
}
}