Answer C is a little tricky, not because of the concept but the semantics used in the question. The non-static inner class requires an instance of the outer class before it can be instantiated itself. The inner class however can be instantiated from outside of the outer class if it is declared protected, public or if it uses the default accessibility.
There's a real cool tutorial on this site titled "Getting in touch with your inner class"
[This message has been edited by Joe
Java (edited March 03, 2000).]