[JAVA] 정리/클래스(Class)_타입(Type)

클래스_enum

쎈코 2023. 2. 22. 21:47

public class Ex68_enum {

public static void main(String[] args) {

//Ex68_enum.java

클래스 종류
1. 클래스
2. 인터페이스
3. 추상 클래스
4. enum

열거형, Enumeration
- 여러개의 값을 가지고 있는 자료형 > 일종의 객관식(선택형)


요구사항] 의류 쇼핑몰 > 티셔츠 판매 > 고객 방문
 > 티셔츠 색깔 보통 정해져 있고(빨, 파, 노) 선택을 해야 함


Case 1. 주관식  <- Danger. 오타가 날 확률 높음
String color = "빨강"; //고객이 선택
만약 "발강"이라고 오타를 내면 else에만 걸림

if(color.equals("빨강") || color.equals("노랑") || color.equals("파랑")) {

System.out.println("판매 가능");

} else {

System.out.println("재고 없음");

}


Case 2. 객관식 <- 오타날 확률이 줄어들음. 이미 제시된 선택지 중 선택만 하면 됨
int input = Color.RED; //클래스.멤버변수
// int input = 1;  //<- 좋지 않음. 1의 값이 뭔지 내가 어떻게 알음?

System.out.println(Calendar.YEAR); //1 <- 우리가 만든 Color 상수랑 똑같은 방식으로 만든 것
//Calendar 클래스가 있고 그 중 하나 선택하면 그 값이 튀어나오게 만드는 방법


// Color.RED = 5; //라고 하면 안됨. 없는 숫자


if(input == 0 || input == 1 || input == 2) {
System.out.println("판매 가능");
} else {
System.out.println("재고 없음");
}



Case 3. enum
//Case 2.와 거의 유사한 방식. Case 2를 간결하게 만든 방식

Colour input2 = Colour.RED;

if(input2 == Colour.RED || input2 == Colour.YELLOW || input2 == Colour.BLUE) {
     System.out.println("판매 가능");
} else {
      System.out.println("재고 없음");
}



//주관식이라 위험함. 오타나면 큰일.
String gender = "남자";
String gender2 = "여자";

Gender gender3 = Gender.MALE;
//type 자체도 Gender로 맞춰서 알아보기 쉽고,
//이미 있는 옵션 중 선택하는 것이기 때문에 틀릴 가능성 낮음



}//main

}//main class


class Color{          //Case 2.

// static : 정적변수 <- 객체를 안만들어도 이미 메모리에 만들어져 있음. 클래스로 접근
public final static int RED = 0; //값을 다른걸로 입력하지 못하게 상수선언
public final static int YELLOW = 1;
public final static int BLUE = 2;
}



enum Colour {           //Case 3.
RED, //= final static 상수(정수)
YELLOW,
BLUE
}


enum Gender{ //알아보기도 쉽고, 틀릴 가능성도 극히 낮아짐
MALE,
FEMALE
}



enum 직급 {
사원,
대리,
과장,
부장
}


enum 논리{
TRUE,
FALSE
}