为什么JAVA中可以不用先声明一个类就可以用这个类实例化一个对象,求详细解答?该怎么处理

为什么JAVA中可以不用先声明一个类就可以用这个类实例化一个对象,求详细解答?
public class outerClass{

  innerClass in=new innerClass();//没声明就实例化了,C++却不可以这样
  public void ouf()
  {
  in.inf();
  }  
  class innerClass{
  //........  
  }

}

------解决方案--------------------
class innerClass{
//........
}
不是已经声明了吗?只不过是个内部类而已。