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 |