본문 바로가기

JAVA

nested class(중첩 클래스)

1. 사용하는 이유

  • 코드를 간단하게 표현하기 위함.

 

2. static nested class

  • 하나의 관심사에 해당하는 내용을 하나의 단위로 묶기 위해 사용
  • 당연히 내부 클래스에 접근 가능.
  • 대표적인 예로 builder class가 있다.
public class Outer {
    private int id;
    private String name;

    public Outer(Builder builder) {
        this.id = builder.id;
        this.name = builder.name;
    }

    public static class Builder {
        private int id;
        private String name;

        public Builder id(int id) {
            this.id = id;
            return this;
        }
        public Builder name(String name) {
            this.name = name;
            return this;
        }
        public Outer build() {
            return new Outer(this);
        }
    }
}

접근제어자는 외부클래스와 동일하게 모두 사용할 수 있다.

 

3. inner class

  • 내부 구현을 감추고 싶을 때 사용한다.
  • 당연히 내부 클래스에 접근 불가능.

(1) local inner class(내부클래스)

  • 로컬 이너 클래스인데, 줄여서 내부 클래스라고 부른다.
public class Inner {
    private class LocalInner {
        private int data;

        public int getData() {
            return data;
        }

        public void setData(int data) {
            this.data = data;
        }
    }
}

접근제어자는 외부클래스와 동일하게 사용할 수 있다.

 

(2) anonymous class(익명클래스)

  • 클래스를 직접 만들어서 사용하고 싶지 않을 때 사용한다.
PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
});

이렇게 Comparator라는 인터페이스의 구현체를 직접 만들지 않고, 해당 인터페이스의 내부 메서드를 구현하고 싶을 때 사용한다.

'JAVA' 카테고리의 다른 글

final  (0) 2022.04.27
static  (0) 2022.04.23
절차지향과 객체지향의 차이점  (0) 2022.04.23
nested class  (0) 2022.04.20
상속  (0) 2022.04.20