프로그래밍/JAVA

Enum(열거형)

Baesj 2021. 7. 17. 20:22

지금까지 공부하면서 이해한 다형성에 대한 설명이다.

추가로 배우거나 다른 방식으로 이해를 하게될 수 있으므로 계속 수정할 예정이다.

 

Enum은 서로 연관된 상수들의 집합이다.

자바 1.5번전부터 새롭게 추가된 것으로, 상수를 정의할 때 final static String 과 같이 정의할 때 문제를 해결해 준다.

 

장점으로는

1. 코드가 단순해 진다.

2. 인스턴스 생성과 상속을 방지한다.

3. 의도가 열거임을 분명이 알 수 있다.

 

public class ExEnum {
    public static final String JANUARY = "1";
    public static final String FEBRUARY = "2";
    public static final String MARCH = "3";

    public static void main(String[] args) {
        String calendar1;
        calendar1 = JANUARY;
        //calendar1 = "1"; //내용을 바꿀 수 있다

        Calender calender2;
        calender2 = Calender.JANUARY;
        //calender2 = "1"; //타입이 다르므로 에러가 발생

        System.out.println(calender2.nums);
    }
}
enum Calender {
    JANUARY("1"), FEBRUARY("2"), MARCH("3"); //코드가 단순해 진다

    public String nums;
    Calender(String nums) { //enum은 사실 클래스이기 때문에 생성자를 가질 수 있다
        this.nums = nums;
    }
}

 

내부적으로 보면 아래와 같다

 

enum Calender {
    JANUARY, FEBRUARY, MARCH;
}
//위의 enum Calender는 아래와 같다
class Calender{
    public static final Calender JANUARY  = new Calender();
    public static final Calender FEBRUARY  = new Calender();
    public static final Calender MARCH = new Calender();
    private Calender(){}
}

 

'프로그래밍 > JAVA' 카테고리의 다른 글

의존성과 의존성 주입(DI)  (0) 2021.07.20
1차 배열 2차 배열 sort(오름차순, 내림차순)  (0) 2021.07.18
추상화 이해  (0) 2021.07.15
객체 지향 5대 원칙 (SOLID 원칙)  (0) 2021.07.14
캡슐화 이해  (0) 2021.07.13