There are two different problems here, but they're both variations on a theme.

methodbb() is an instance method of class aa.bb; therefore you need an instance of this class to call the method. If it were a static method, you could call it as

aa.bb.methodbb()

but since it's an instance method, you need an instance, like in your variable "b" in main.

Now the other line: methodaa() is an instance method of aa, so you need an instance of aa to call it. Because bb is a static class, there's no instance of aa associated with it. If bb were not marked static, this would work -- although then your initialization of variable b wouldn't work as written, because when constructing a bb you'd need to supply an aa.