지난번 상수(Constant)와 static에 이어서
이번글에서는 열거형(Enumeration)에
대해서 알아보겠습니다.
열거형(Enumeration)
먼저 열거형(Enumeration)에 대해서 설명하기에
앞서서 열거형이라는 개념이 왜 탄생하게 되었는지에
대해서 알아보겠습니다.
class Shoes{
String brand;
String name;
Shoes(String brand, String name){
this.brand = brand;
this.name = name;
}
}
class test{
public static void main(String[] args){
Shoes s1 = new Shoes("Nike", "AirForce1");
Shoes s2 = new Shoes("Adidas", "Yeezy350");
// 잘못된 브랜드를 입력해도 막을 수 있는
// 방법이 없음
Shoes s3 = new Shoes("Nake", "Jordan1");
}
}
위 코드를 살펴보면 Nike라는 브랜드를 Nake로 입력하여도
막을 수 있는 방법이 없기 때문에 브랜드가 Nake인 인스턴스가
생성되게 됩니다.
하지만 여기서 우리의 목적은 올바른 브랜드명을 가진
인스턴스를 생성하는 것이기 때문에 브랜드명에 대한
자유도를 제한하는 것이 필요합니다.
이때 여기서 열거형(Enumeration)이 등장합니다.
열거형(Enumeration)은 상수(Constant)의 모음이며
'enum' 키워드를 사용하여 정의합니다.
enum Brand{
NIKE, ADIDAS;
}
enum Name{
AIRFORCE, JORDAN, YEEZY;
}
class Shoes{
String brand;
String name;
Shoes(String brand, String name){
this.brand = brand;
this.name = name;
}
}
class test{
Shoes s1 = new Shoes(Brand.NIKE, Name.AIRFORCE);
Shoes s2 = new Shoes(Brand.ADIDAS, Name.YEEZY);
}
enum 키워드를 사용해서 사용할 상수(Constant)들을
생성한 후에 Brand.ADIDAS 와 같은 형태로 사용합니다.
참고로 enum안에 상수들은 모두 대문자를 사용합니다.
열거형을 사용하게 되면 오류의 위험을 줄이고
원하는 값을 정확하게 입력할 수 있다는 장점이 있습니다.
또한 열거형은 class의 성질을 가지고 있기 때문에
변수, 함수 및 생성자(Constructor) 모두 사용가능합니다.
열거형을 class같이 사용하는 예시를 아래에서
살펴보겠습니다.
Enum Sauce{
SPICY(0.5),
BBQ(1.0),
MUSTARD(0.0);
private double addedCost;
Sauce(double addedCost){
this.addedCost = addedCost;
}
double getCost(){
return this.addedCost;
}
}
위에서 보시는 것과 같이 변수, 함수, 생성자
모두 사용가능하고 이를 통해서 오류의 위험성은
줄이고 효과적으로 원하는 값을 입력하는 것이 가능합니다.
지금까지 열거형(Enumeration)의 사용법과
열거형을 사용해야 하는 이유에 대해서 알아보았습니다.
오류의 위험성을 줄이고 원하는 값을 정확하게
입력할 수 있게 해주는 장점이 있기 때문에
상황에 맞게 적절히 사용한다면 코드의 시인성을
높여주기도 합니다.
그럼 지금까지 열거형(Enumeration)에 대해서 알아보았습니다.
다음 글에서는 함수 오버로딩(Method Overloading)에
대해서 알아보겠습니다.
'자바(JAVA) 기초 함께 알아보자' 카테고리의 다른 글
자바(JAVA) 기초 함께 알아보자(24) - 다형성(Polymorphism) (0) | 2025.01.23 |
---|---|
자바(JAVA) 기초 함께 알아보자(23) - 함수 오버로딩(Method Overloading) (2) | 2025.01.16 |
자바(JAVA) 기초 함께 알아보자(21) - 상수(Constant) / static (0) | 2025.01.08 |
자바(JAVA) 기초 함께 알아보자(20) - 예외처리(Exception) (2) | 2025.01.02 |
자바(JAVA) 기초 함께 알아보자(19) - 상속(Inheritance) (0) | 2024.12.30 |