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
}
}
내용이 유익하셨다면 구독 및 좋아요 클릭 부탁드려요 :)
오늘 하루도 즐거운 하루 보내세요!
'Language > Java' 카테고리의 다른 글
[Java 무작정 따라하기] 10. Java 람다식, 자바 람다식에 대해 알아보자 (0) | 2020.05.11 |
---|---|
[Java 무작정 따라하기] 9. JAVA 제네릭, 자바 제네릭 클래스, 자바 제네릭 알아보기 (0) | 2020.05.11 |
[Java 무작정 따라하기] 7. java 오버로딩, 오버라이딩 및 다형성과 형변환 학습하기 (0) | 2020.04.27 |
[Java 무작정 따라하기] 6. 알기 쉽게 설명하는 Java 인터페이스 정리! (0) | 2020.04.27 |
[Java 무작정 따라하기] 5. 자바 추상클래스 간단 정리 (0) | 2020.04.27 |