: class 안의 class를 innerclass
: class 안의 method 안의 class를 local inner class
User 내부의 this는 당연히 user 클래스에서 생기는 this 객체이지만
앞에 상위 클래스명. This를 붙이면 상위 클래스를 포함한다. (MyUtl.this처럼)
내부 class 생성법 (new class().new inner class())
상위 클래스의 MyUtil의 정보가 부족해 단독 생성이 불가함
당연히 다른 객체가 나온다.
static이란 공유 성질에 의해 같은 참조라 생각될 수 있지만 다름
외부 클래스에서 객체 생성 없이 사용할 수 있다는 점이 중요
static은 class 선언 없이 사용할 수 있기에
에러가 난다.
만약 static키워드를 사용하고 싶지 않다면 내부 클래스 보다는 별개의 클래스로 만드는 것이 좋다.
내부함수가 static함수면 내부 클래스도 static이여야 같이 static영역으로 가서 클래스를 구성할 수 있다.