enum은 열거형이라고 부른다 열거형은 서로 연관된 상수들의 집합니다.
즉, enum=서로 연관된 상수들의 집합.
enum Fruit{ APPLE, PEACH, BANANA;}enum Company{ GOOGLE, APPLE, ORACLE;}public class ConstantDemo { public static void main(String[] args) { /* if(Fruit.APPLE == Company.APPLE){ System.out.println("과일 애플과 회사 애플이 같다."); } */ Fruit type = Fruit.APPLE; switch(type){ case APPLE: System.out.println(57+" kcal"); break; case PEACH: System.out.println(34+" kcal"); break; case BANANA: System.out.println(93+" kcal"); break; } }}enum의 Fruit라는것도 클래스이다 .
스위치문의 case에서 사용하는 그냥 FRUIT.APPLE을 안적고 그냥 APPLE을 적어도 앞에 플룻을 적지않고 그 플룻의
상수만 적어도 된다.
enum을 사용하는 이유를 정리하면 아래와 같다.
- 코드가 단순해진다.
- 인스턴스 생성과 상속을 방지한다.
- 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다
enum과 생성자.
생성자 -> 클래스이름과 같은 메소드는 생성자이다.
enum Fruit{ APPLE, PEACH, BANANA; Fruit(){ System.out.println("Call Constructor "+this); }}이것과 같이
enum에 생성자를 추가하면
APPLE,PEACH,BAnANA를 하나하나 만들때마다 호출될때마다 상수들의 값들이 세팅될대마다
플루트가 인스턴스화 되면서 인스턴스를 만들려고 생성자가 호출되어 총 3회 호출된다.(문법적으로 숨어져
있음)
+this는 각각의 이름을 불러온다.
또한 필드값(변수값)을 가질수있다 메소드도 가질수 있다
Fruit(String color){
System.out.println("Call Constructor "+this); this.color = color;}생성자를 만들때마다 컬러라는 매개변수를 받아 this가 있는경우에는 전역변수이고.
this가없는 color는 매개변수를 가르키게된다 즉 지역변수이다.
지역변수>전역변수
this 명시하지 않는경우에는 지역 명시한경우에는 전역이다.
위와같이 color라는 매개변수를 받는다.
enum Fruit{ APPLE("red"), PEACH("pink"), BANANA("yellow"); public String color; Fruit(String color){ System.out.println("Call Constructor "+this); this.color = color; }}APPLE 뒤에 ( ) 은 생성자를 호출하는것이고 괄호안의 인자는 생성자의 Fruit( String color)로 들어가고
들어가면 color; 여기로 들어간다. 또한 this.clor가 다시 public String color로 다시 들어가면서 레드가 된다.
열거형은 그것자체가 클래스이기떄문에 내부에 필드 생성자 메소드 있다. 단순히 상수가 아니라 더 많은
역할을 할 수 있다.
열거형은 값들을 저장하고 그값들이 변경되지않도록 한다.
'Java' 카테고리의 다른 글
| 접근제어자 & 사용이유 (0) | 2019.09.12 |
|---|---|
| 참조 (reference) (0) | 2018.09.04 |
| java clone (0) | 2018.09.04 |
| java finalize , garbage collection (0) | 2018.08.29 |
| 자바 equals (0) | 2018.08.29 |