Mani,
B is obviously wrong.
You should pay attention the phrase "any class". Surely an inner class is not accessed from any class, its accessibility outside the class in which it is defined will depend upon the its access modifiers and those of its encompassing class. And for a local inner class (one declared inside a method), you should know that it can never be declared as private,static,public or protected.And being local, you know that it exists only for as long as the method that contains exists. So it can only be accessed in the class that it is contained.
D is also wrong. You are right to say that local inner classes are implicitly final. Again pay attention to the phrase "must ". It is not a must that they be declared final, but they may be declared final, redundant though.
I think such phrases are what we ought to watch out for when deciding which answer is correct.

What do you think?