Coding/Java

Java Enumeration(열거형)

heyoon2j 2020. 9. 17. 13:42

■ Java Enumeration(열거형)

enum 키워드 사용

- java.lang.eum 클래스를 상속

- enum은 다른 클래스를 상속하지 못하지만, 인터페이스 구현은 가능(이미 상속하고 있기 때문에)

- 내부적으로는 클래스 동작

- 열거형 타입에는 열거형 상수와 null 값 할당 가능

- public과 default만 사용 가능

 

 

• 기본 구현

 - 열거형 상수는 객체이다.

enum Job {  // 각 상수는 0부터 숫자를 가지지만, Symbol로만 사용하고 숫자는 사용하지 않는다.
    STUDENT, MARKETING, DEVELOPER, CHIEF_EXECUTIONAL_OFFICER; // 열거형
}

class Foo{
    enum Symbol{
        ONE, TWO, THREE;
    }
}

class Test{
    public static void main(Strin[] args){
        System.out.println(Job.STUDENT);
        System.out.println(Foo.Symbol.ONE);   
    }
}

 

• 열거형 내부에 메소드 구현

enum Symbol {
    ONE, TWO, THREE, FOUR;

    public Symbol nextSymbol() {
        if (this.equals(ONE)) {
            return TWO;
        } else if (this.equals(TWO)) {
            return THREE;
        } else if (this.equals(THREE)) {
            return FOUR;
        }else{
            return ONE;
        }
    }
}

 

• 열거형 내부에 메소드 구현

- enum 생성자는 private 이다.

enum Family {
    FATHER("아버지"), MOTHER("어머니"), SON("아들"), DAUGHTER("딸");
    private String koreanWord;

    // private는 생략 가능(public 불가, 자동으로 private)
    private Family(String koreanWord){
        this.koreanWord = koreanWord;
    }
    public String getKoreanWord() {
        return koreanWord;
    }
    public void setKoreanWord(String koreanWord) {
        this.koreanWord = koreanWord;
    }
}

class Test{
    public static void main(String[] args){
        Family farm = Family.SON;
        System.out.println(farm.getKoreanWord());
        farm.setKoreanWord("버린 자식");
        System.out.println(farm.getKoreanWord());
    }
}

 

'Coding > Java' 카테고리의 다른 글

Java Handling Exception(예외 처리)  (0) 2020.09.17
Java Generic(제네릭)  (0) 2020.09.17
Java Abstract Class & Interface  (0) 2020.09.17
Java Polymorphism(다형성)  (0) 2020.09.17
Java Modifier(제어자)  (0) 2020.09.16