728x90

이 강의는 자바의 프로젝트를 어떻게 만드는지, 또한 빌드를 어떻게 하는지에 대한 강의를 진행하지 않는다.

그러나 자바의 기본적인, 그리고 자바에 필수적인 기능들도 분명 존재하고 이 블로그엔 그 작업에 필요한 포스팅도 함께 제공하고 있다.

그 정보를 확인하고 싶다면 여기를 참조하라. 양이 조금 되고 현재진행형으로 늘어나고 있으므로 페이지내의 찾기(ctrl+f 나 cmd+f)로 찾아보도록하자.


익명 클래스 문법은 특이한 문법인데 상속+내부클래스라는 신박한 조합이다.

따라서 익명 클래스는 상속한 것으로 처리된다. 왜 익명이냐하면 이 클래스의 이름이 없기 때문이다.

아래의 예시를 보자.


public interface Person {
public final static int foot = 2;
public static int hand = 2;
public int mouth = 1;
int eye = 2;

public abstract void run();

public void sleep();

void eat();

static void breath() {
System.out.println("헉,헉, 살기 위해 숨쉼!");
}

default void eatChicken() {
System.out.println("치킨 맛있엉!");
}
}


위의 인터페이스는 당연하지만 상속받아서만 사용할 수 있으며 인스턴스를 만들 수 없다고 알고 있다.

그렇기 때문에 상속으로만 인스턴스를 만들 수 있는데 익명클래스를 사용한다면 아래와같이 간단하게 인스턴스를 만들 수 있다.


public class Main {
public static void main(String[] args) {
Person kukaro = new Person() {
@Override
public void sleep() {
System.out.println("푹 잘잠");
}

@Override
public void run() {
System.out.println("두칸씩 뜀");
}

@Override
public void eat() {
System.out.println("고기만 먹음");
}
};
kukaro.run();
kukaro.eatChicken();
Person.breath();
}
}


새로운 문법인데 생성자를 호출해주고 뒤에 바로{}를 만들고 그 안에 오버라이딩해야하는 메소드를 오버라이딩 하는 방식으로 사용하는 것이다.

이 방법은 몇가지의 장점과 몇가지의 단점을 동시에 가진다.

만약 단 한번밖에 쓰이지 않을 클래스를 여러개 만드는것은 굉장히 비효율적이고 하나하나마다 클래스를 만들바에 익명클래스로 만드는게 좋다.

그러나 익명클래스는 이름이 없으므로 재활용이 불가능하며 코드가 조금 지저분해진다는 위험이 있다.

꽤 취향이 갈리는 문법이긴하나 재활용하지 않는 클래스의 경우 굉장히 자주 사용하는 문법이다.


'Programming > Java' 카테고리의 다른 글

[Java-25]예외(Exception)-(2)  (0) 2018.01.01
[Java-24]예외(Exception)-(1)  (0) 2018.01.01
[Java-22]내포클래스(Nested Class)  (0) 2017.11.09
[Java-21]인터페이스(interface)  (0) 2017.11.08
[Java-20]추상클래스(abstract class)  (0) 2017.11.05

+ Recent posts