📘 Nested Class
- 클래스 안에 클래스가 들어가 있음
- 코드를 간단하게 표현하기 위하여 Nested Class를 만듦
- 소스의 가독성과 유지보수성을 높이고 싶을 때 사용
📚 Static nested class
public class ExClass {
private int intValue = 15;
public String strValue = "have a nice day";
static class InClass{
public int innerValue = 0;
public void setInnerValue(int innerValue) {
this.innerValue = innerValue;
}
public int getInnerValue(){
return innerValue;
}
}
}
- static으로 선언
- 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있을 때 사용
- static으로 선언된 변수에 접근 가능
- 겉으로 보기에는 유사하지만 내부적으로 구현이 달라야 할 때 사용
📚 inner class
- static을 사용하지 않음
- 감싸고 있는 외부 클래스의 어떤 변수도 접근 가능
- 캡슐화가 필요할 때, 즉 내부 구현을 감추고 싶을 때 사용
- 다른 클래스에서 재사용할 일이 없을 때만 만들어야 함
📝 Local inner class Example
public class ExClass {
private int intValue = 15;
public String strValue = "have a nice day";
class InClass{
public int innerValue = 0;
public void setInnerValue(int innerValue) {
this.innerValue = innerValue;
}
public int addNum(){
return intValue + innerValue;
}
}
}
📝 Anonymous inner class Example
...
button.setListener(new EventListener(){
public void onClick(){
System.out.println("Anonymous inner class");
}
});