blues_log
Published 2023. 4. 27. 20:28
2023-04-27 TIL (Java : Object, enum) TIL&WIL

오늘 배운 내용

  • Java : Object, enum

새로 알게된 내용

 

Object

  • Object는 모든 클래스의 조상이다.
  • 즉, 자바에서 모든 클래스들은 사실 Object를 암시적으로 상속받고 있다.
  • 이는 모든 클래스가 공통으로 포함하고 있어야 하는 기능들을 제공하기 위해서이다.
  • 위의 내용을 바탕으로 밑의 두 코드를 보면 둘은 정확하게 같은 의미를 갖는다.
class A{}

class A extends Object {}

Object의 주요 메소드들

우선 Object의 메소드는 클래스 내에서 재정의(오버라이딩)을 하여 적절하게 활용할 수 있다 !!

1) toString() 메소드

  • 해당 인스턴스에 대한 정보를 문자로 반환하는 메소드
  • 반환되는 문자열은 클래스 이름과 함께 구분자로 '@'가 사용되며, 그 뒤로 16진수인 hash code가 추가됨
  • hash code 값은 인스턴스의 주소를 가리키는 값으로 인스턴스마다 모두 다르게 반환됨

 

2) equals() 메소드

  • 객체와 객체가 같은 것인지 비교하는 메소드이다.
  • 참조 변수가 가리키는 값(메모리의 주소값)을 비교하므로, 서로 다른 두 객체는 언제나 false를 반환하게 된다.

 

3) clone() 메소드

  • 어떤 객체가 있을 때 그 객체와 똑같은 객체를 복제해주는 메소드이다.
  • 복제하는 클래스가 복제가 가능한 지 꼭 명시를 해야한다. 방법은 다음과 같다.
class A implements Cloneable {}
  • clone의 접근제어자는 protected이다. 즉 다른 패키지면 호출이 되지 않는다.

 

4) finalize() 메소드

  • 객체가 소멸될 때 호출되기로 약속된 메소드이다.
  • 많은 개발자들이 이 메소드의 사용을 여러 이유로 만류하고 있음. 즉, 실질적인 사용은 거의 하지 않음.

 

 


enum이란

서로 연관된 상수들의 집합을 의미한다.

서로 연관된 값을 저장하고, 그 값들이 변경되지 않도록 보장해주는 역할을 한다.

 


enum을 사용하는 이유

  • 코드가 단순해진다
  • 인스턴스 생성과 상속을 방지한다.
  • 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다.

 


enum의 특징

  • 클래스를 상수처럼 사용할 수 있다.
  • enum 클래스를 구현하는 경우 상수 값과 같이 유일하게 하나의 인스턴스가 생성되어 사용된다.
  • 인스턴스 생성과 상속을 방지하여 상수값의 타입안정성이 보장된다.
  • 열거형 자체가 클래스이기 때문에 열거형 내부에 생성자, 필드, 메소드를 가질 수 있어서 단순히 상수가 아니라 더 많은 역할을 할 수 있다.

 


참고

https://opentutorials.org/module/516/6091 (정말 설명이 잘되어 있다. enum이 헷갈리면 다시 학습하자..)

https://math-coding.tistory.com/179