익명클래스(Anonymous Class)

위에서 익명 클래스에 대한 말이 나오는데 어떤의미인지에 대해 살펴보자 .

클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한 번만 사용될수 있고, 오직 하나의 객체만을 생성할 수 있는 일회용 클래스.

  • 이름이 없기 때문에 생성자를 가질수 없다.
  • 단 하나의 클래스를 상속받거나 단하나의 인터페이스만을 구현 할 수 있다.
  • 하나의 클래스로 상속받는 동시에 인터페이스를 구현하거나 둘이상의 인터페이스를 구현할 수 없다.

추상클래스 action

package anonymousclass;

public abstract class Action{
    public abstract void exec();
}

MyAction 클래스

package anonymousclass;

public class MyAction extends Action {
    @Override
    public void exec() {
        System.out.println("exec");
    }
}

MainClass

package anonymousclass;

public class ActionExam {
    public static void main(String[] args) {

        //1. 추상 클래스 사용
        Action action = new MyAction();
        action.exec();

        //2. Anonymous Class
        Action anonymousAction = new Action(){
            @Override
            public void exec() {
                System.out.println("exec");
            }
        };
        //action을 상속받는 클래스를 만들 필요가 없는 경우
        //action을 상속받는 클래스가 해당 클래스에서만 사용되고 다른 클래스에서는 사용되지 않는 경우
        action.exec();
    }
}

추상클래스를 상속받아서 추상클래스의 매소드를 사용할수 있지만, 만일 해당 클레스에서만 활용되고 다른 클래스에서 사용되지 않는 경우에는 2번과 같은 Anonymous 클래스를 사용한다.

추상클래스,인터페이스 는 원래 상속을 받아야만 사용이 가능하지만, 익명 클래스에서는 위와 같이 사용 할 수 있다.

잘못된 부분이 있으면 알려주세요~

참고 : https://programmers.co.kr/learn/courses/5/lessons/243

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

Java 와 객체 지향  (0) 2019.12.03
Java jar파일 만들기  (0) 2019.08.04
인터페이스와 추상클래스  (0) 2019.06.10
람다 식 Lambda Expression (1)  (0) 2019.06.09
Java OutOfMemoryError  (0) 2017.12.18

+ Recent posts