Programming/객체 지향 프로그래밍(OOP)

OOP 활용: object 클래스

vita12321 2023. 10. 9. 08:00
728x90
반응형

이번 글에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 핵심 요소 하나인 'Object 클래스' 대해 깊게 다루겠습니다. 이전에는 java.lang 패키지와 활용법에 대해 살펴봤지만, 이번 글에서는 Object 클래스를 어떻게 활용하는지, 그리고 필요한지 등에 대해 자세하고 심화된 내용을 통해 설명하겠습니다.


1. Object 클래스란?

 

Java 언어에서 모든 클래스의 최상위 부모로 위치하는 것이 바로 Object 클래스입니다. Java에서 생성되는 모든 객체들은 직간접적으로 Object 클래스로부터 상속을 받아 만들어집니다. 이러한 특성 때문에 Java 모든 객체들은 기본적으로 Object 클래스가 제공하는 메소드를 가질 있습니다.


2. Object 클래스를 사용하는가?

 

Object 클래스가 제공하는 메소드들은 여러분이 작성하는 Java 코드에서 매우 중요한 역할을 담당합니다. toString(), equals(), hashCode() 등과 같은 메소드들은 각각 객체를 문자열로 변환, 객체가 동일한지 비교, 객체의 해시코드 값을 반환 다양한 용도로 사용됩니다.


3. Object클래스 활용

 

Java 언어 기준으로 toString() equals() 메소드 사용 예시부터 살필 것입니다.

 

예시 코드:

class Person {

    private String name;

 

    public Person(String name) {

        this.name = name;

    }

 

    @Override

    public String toString() {

        return "Person [name=" + name + "]";

    }

 

    @Override

    public boolean equals(Object obj) {

        if (this == obj)

            return true;

        if (obj == null)

            return false;

        if (!(obj instanceof Person))

            return false;

       

        Person other = (Person) obj;

       

        if (!name.equals(other.name))

            return false;

       

        return true;

   }

}

 

public class Main {

 

   public static void main(String[] args) {

 

       Person p1 = new Person("John");

       System.out.println(p1.toString());  // Outputs: "Person [name=John]"

 

       Person p2 = new Person("John");

       System.out.println(p1.equals(p2));  // Outputs: true

   }

}

예제에서는 `toString()`메소드와 `equals()`메소드를 오버라이딩하여 자신만의 로직을 구현하였습니다. `toString()` 메소드는 객체의 상태를 문자열로 변환하여 반환하며, `equals()` 메소드는 객체가 같은지 비교하는 로직을 구현합니다.


4. Object 클래스의 중요한 메소드들

 

Object 클래스에는 위에서 언급한 `toString()`, `equals()`, 그리고 `hashCode()` 외에도 여러 가지 중요한 메소드들이 있습니다.

 

  • getClass(): 해당 객체의 Class 타입을 반환합니다.
  • clone(): 해당 객체를 복제하여 새로운 인스턴스를 생성합니다.
  • finalize(): 가비지 컬렉터에 의해 해당 객체가 소멸될 때 호출되는 메소드입니다.

5. 주의사항

 

`equals()`메소드와 `hashCode()`메소드를 오버라이딩 때는 메소드 사이의 계약을 지켜야 합니다. , 객체가 같다면 (equals() 메소드가 true 반환한다면) 객체의 hashCode() 값도 같아야 합니다.


6. 활용 사례

 

Object 클래스와 하위 클래스들은 다양한 상황에서 활용됩니다.

 

  • 데이터 모델링: DTO(Data Transfer Object)나 VO(Value Object) 등에서 자주 사용됩니다. 이러한 클래스에서는 toString(), equals(), hashCode() 등을 오버라이딩하여 특정 로직에 맞게 재정의하는 경우가 많습니다.

  • 컬렉션 프레임워크: HashSet, HashMap 등과 같은 자료구조에서 equals()와 hashCode() 메서드는 중요한 역할을 합니다. 이런 자료구조들은 내부적으로 이 두 개의 함수를 사용하여 원하는 요소를 찾거나, 중복된 요소를 제거하는데 사용합니다.

7. 결론

 

객체 지향 프로그래밍에서 'Object 클래스' 중요한 도구입니다. 도구를 이해하고 활용하면 코드 작성 효율성과 가독성을 높일 있으며, 복잡한 문제에 대응하는데 유용합니다.

 

하지만 모든 것이 그렇듯이 잘못 사용되면 문제가 발생할 있으니 주의하여 설계해야 합니다. Object 클래스 내부에 있는 여러 메서드들은 각자 특정 목적에 맞게 설계되었기 때문에, 용도와 기능을 정확하게 알고 적절하게 활용하는 것이 중요합니다.

728x90
반응형

 

728x90
반응형