Java의 중첩 클래스가 헷갈리는데...

hiluciano의 이미지

public class OuterClass
{
public static class NestedClass
{
public void foo() { }
}
}

여기서의 NestedClass하고요

public class OuterClass
{
public class InnerClass
{
public void foo() { }
}
}

여기서의 InnerClass의 차이가 무엇인가요?
둘 다 인스턴스 만들 수 있는 거 보면 비슷해 보이는데

ammoguy의 이미지

http://victory.textcube.com/31
어느 정도 설명이 되어있군요.

--------------cut here----------
너는 아느냐, 진정한 승리를