Public variables belong to the class module, getting a parameter by classname.variablename may mix the data between two or more class objects.
The correct way is by callsub with parameters, or return from an existing sub in the class (for 1 parameter). If you need more then 3 - define a type and send the type object as parameter. The types are global so once defined in the class - the main knows the type.
With Return you can continue operation in the calling sub while with callsub you get the response in another sub in the calling module. This difference should control your prefered way of use.
Another important point - with callsub you can use callsubdelayed which lets the program run and not wait for the result (if it is not just waiting for it to continue).