익명클래스(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

자바 heap 메모리 오류 났을떄

처음에는 자바 heap 메모리 가 너무 적어서 일어나는 줄 알고 heap메모리를 늘려도 보고

Heap 메모리를 처리하는 JVM 문제인것같아서 찾아보고 했는데 해답은

간단한 곳에 있었다.

다음의 관련된 오류를 보면 StringBuilder에서 문제가 생겼다는 것을 유추하여

 

그부분을 다시 찾아보니 문자열을 전처리 할 때

제대로 처리가 되지않아 String 부분에서 메모리가 계속 쌓였던 것이다.

 

아래는 나의 소스와는 관련이 없지만 참고할만한 자료이다.

String 오류 를 찾아냄

http://dgdg.tistory.com/entry/String-appending%EC%97%90%EC%84%9C-operator%EC%99%80-StringBufferappend%EC%9D%98-%EC%B0%A8%EC%9D%B4

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

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

+ Recent posts