Data inheritance is left up to the class itself. By and large, this is not a problem in Perl, because most classes model the attributes of their object using an anonymous hash, which serves as its own little namespace to be carved up by the various classes that might want to do something with the object. A method expects its first argument to be the object or package it is being invoked on. A static method expects a class name as the first argument. It provides functionality for the class as a whole, not for any individual object belonging to the class.
Constructors are typically static methods.
Many static methods simply ignore their first argument, since they already know what package they're in, and don' t care what package they were invoked via. A virtual method expects an object reference as its first argument. There are two ways to invoke a method, one of which you're already familiar with, and the other of which will look familiar. We'll use the two methods defined above, the static method to lookup an object reference and the virtual method to print out its attributes. The parentheses are required if there are any arguments.