모든 클래스의 조상 Object
컴파일러는 아무런 클래스도 상속하지 않으면 자동으로 extends Object를 삽입해 Object클래스를 상속한다.
class A{
...
}
class B extends A{
...
}
클래스 A를 상속받아 클래스 B를 만들었을 때 부모 클래스 A는 아무것도 상속하지 않았다. 이렇게 되면 컴파일러는 extends Object를 삽입하고 결국 Object<-A<-B의 상속관계가 만들어 진다.
toString()
: 객체 정보를 문자열로 리턴하는 메서드 패키지명.클래스명@해시코드로 나타난다.
equals(Object obj)
: 입력매개변수로 넘어온 객체와 자기 객체의 스택 메모리 변숫값을 비교해 그 결과를 true 또는 false로 리턴하는 메서드다.
hashCode()
: 객체에 대한 해쉬 코드를 반환한다.
Object clone()
: 객체 자신의 복사본을 생성하여 반환한다.
* equals(Object obj)
실제 내용을 비교하고자 할 떄는 equls()메서드를 오버라이딩해 사용해야 한다.
class B{
String name;
B(String name){
this.name;
}
@Override
publice boolean equals(Object obj){
if(obj instanceof B){
if(this.name==((B) obj).name)
return true;
}
return false;
}
}
객체 타입을 일치시키기 위해 캐스팅을 할 수 있는지를 확인하는 instanceof 키워드와 다운캐스팅을 사용했다. 이렇게 되면 클래스 B의 equals()는 이제 위칫값이 아니라 내용을 비교하게 된다.