java.lang 패키지

최주영·2024년 4월 22일
0

자바

목록 보기
26/27

✅ Object 클래스

  • 자바의 최상위 클래스

Object 클래스가 최상위인 이유?
-> 객체의 정보, 비교, 확인 등 자주 사용하는 기본 기능들을 일일이 만들기 힘듬
-> 모든 객체에 필요한 공통기능을 편리하게 제공하기 위해서 만들어짐
-> 모든클래스에서 오버라이딩 을 통해 toString() 메소드를 재정의 할 수 있음


✅ 종류

  • toString() = 객체의 정보를 제공
  • equals() = 객체의 같음을 비교
  • getClass() = 객체의 클래스 정보를 제공
  • 기타 등등.. clone(), hashCode(), notify(), wait()

✅ toString()

  • 객체의 정보를 문자열 형태로 제공함
  • 디버깅과 로깅에 유용

💡 System.out,.println()
우리가 출력할 때 자주 사용하는 이 메서드는
Object 매개변수를 사용하고 내부에서 toString() 을 호출한다

✅ 정적 의존관계 vs 동적 의존관계

정적 의존관계

  • 컴파일 시간에 결정되며, 클래스간의 관계를 의미
  • 프로그램을 실행하지 않고, 클래스 내에서 사용하는 타입들로 의존관계 파악

동적 의존관계

  • 런타임에 확인할 수 있는 의존관계를 의미
  • 런타임에 어떤 인스턴스를 사용하는지를 나타내는 것
    EX) Object 클래스 인자에, 경우에 따라 Car 인스턴스, Dog 인스턴스가 넘어옴

✅ equals()

동일성 : == 연산자를 사용해서 두 객체의 참조 가 동일한 객체를 가리키는지 확인
동등성 : equals() 메서드를 사용해서 두 객체가 논리적으로 동등한지 확인

  • Object 가 제공하는 equals() 는 기본적으로 == 으로 동일성 비교를 제공한다
    자바는 클래스마다, 주민등록번호, 연락처, 회원번호 등 어떤 것을 기반으로 처리하는지 모르기 때문에
    사용자가 동등성 비교를 사용하고 싶으면 equals() 메서드를 재정의 해야함
public class Animal{
	private String id;
    
    public Animal(String id){
    	this.id = id;
    }
	
    @Override // Object 메서드를 자식에서 재정의
    public boolean equals(Object obj){
    	Animal animal = (Animal) obj;
        boolean result = this.id.equals(animal.id); // 본인 객체 아이디와 인수로 넘어온 아이디를 비교
        return result;
    }
}
// main
Animal animal1 = new Animal("id-100");
Animal animal2 = new Animal("id-100");

System.out.println(animal1 == animal2); // false
System.out.println(animal1.equals(animal2)); // true (서로 다른 객체이지만 둘 다 같은 id를 가지고있다)

💡 동일 vs 동등
동일 : 물리적으로 같은 메모리에 있는 객체 인스턴스인지 참조값을 확인하는 것
동등 : 논리적으로 같은지 확인하는 것

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글