[Java 무작정 따라하기] 8. Java 열거형 및 익명클래스 알아보기

 Java 무작정 따라하기 

8. Java 열거형 및 익명클래스 알아보기

 

  • 열거형이 무엇인지 알아보자.
  • 익명클래스가 무엇인지 알아보자.

 

1. 자바 열거형이란?

 

  • 열거형은 미리 정의된 상수값을 만들기 위한 하나의 자료형이다.
  • enum 키워드를 사용하여 정의한다.
  • 열거형으로 선언된 변수에는 미리 지정된 값만 대입이 가능하다.
  • 상수값을 배열로 리턴하는 static 메소드로써 values()를 제공한다.
    • 예) enum Day{SUNDAY,MONDAY,TUESDAY,WENSDATY,THURSDAY,FRIDAY,SATURDAY}
    • Day.values(); 

 

2. 열거형의 생성자와 메소드

 

  • 열거형 정의에 필드와 메소드를 포함할 수 있다.
  • 이럴 경우 상수 선언이 변수나 메소드보다 먼저 정의되어 있어야 하며 세미클론(;)으로 끝나야 한다.
  • 생성자는 열거형과 같은 이름을 가지며 접근 제어자는 생략 또는 private이어야 한다.
  • 열거형의 생성자는 상수값을 설정(객체를 생성)할 때 자동으로 호출된다.
  • 열거형에서 상수는 마치 하나의 객체와 같다.

 

3. 열거형 사용 예제

 

package javaprograming;

enum Team {
	FC(40,30),TT(30,40);
    
    private final int win;
    private final int lose;
    
    //열거형의 생성자는 private 혹은 생략
    private Team(int win,int lose){
    	this.win = win;
        this.lose = lose;
    }
    
    public double winsRate(){
    	return (win*100) / (win + lose) ;
    }
}

public class EnumTest{
	public static void main (String[] args){
    	// 열거형의 상수를 객체처럼 생성해준다.
        Team t = Team.FC;
        
        System.out.println(t.winsRate());
    }
}

 

4. 익명 클래스란?

 

  • 일회성으로 1개의 객체를 생성하기 위해 사용하는 클래스.
    • 클래스 정의와 동시에 객체를 생성할 수 있다.
  • 슈퍼 클래스를 상속받거나 인터페이스를 구현하도록 익명 크래스를 정의한다.
    • new 클래스or인터페이스 () {}
    • 중괄호는 익명 클래스의 몸체이다.
class CSuper{
	pubic int a = 10;
    public void method1(){
    	System.out.println("super1");
    }
    public void method2(){
    	System.out.println("super2");
    }
}

public class AnonymousTest{
	public static void main(String[] args){
    	// 기존 객체를 생성할때는 세미클론으로 끝냈음.
        //CSuper sub = new CSuper() ;
        
        //익명클래스는 세미클론 대신 몸체{}
        CSuper sub = new CSuper(){
        	public int b = 20;
            public void method1(){
            	System.out.println("sub1");
            }         
            public void method3(){
            	System.out.println("sub3");
            }
        }
        
        sub.method1(); // sub1
        sub.method2(); // super2
        sub.method3(); // sub3
    }
}

 

 

내용이 유익하셨다면 구독 및 좋아요 클릭 부탁드려요 :)

오늘 하루도 즐거운 하루 보내세요!