What do you mean, of course they are public, how else do you think you can reference them in the procedure test? Just try explicitly declaring those properties as private and try running test.

I too often do that, but I constantly question myself as to whether I should do that or I should make it a method of the class instead.
Yes, you're right -- I just don't think of them as Public in the same way as a Standard Module Public variable since they have to instantiated as part of an object -- just me

Depends on situation -- I think of Methods as the class equivalent of a Sub, and Properties as the class equivalent of a Function

So I might have a property FullName defined as m_Last & " " & m_First