오늘 배운 내용
- 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이 헷갈리면 다시 학습하자..)
'TIL&WIL' 카테고리의 다른 글
| 2023-05-01 TIL (Java : JVM, 변수, 형변환) (0) | 2023.05.01 |
|---|---|
| 2023-04-28 (feat. 생활코딩 Java 1회 완강!) (0) | 2023.04.28 |
| 2023-04-26 TIL (Java : 예외) (0) | 2023.04.26 |
| 2023-04-25 TIL (Java : 인터페이스, 다형성) (0) | 2023.04.25 |
| 2023-04-24 TIL (Java : 추상, final) (0) | 2023.04.24 |