In reply to Alex K.:
Separating the class declaration from the implementations does not serve the same purpose as it does in other languages. SystemVerilog does not have the concept of class prototypes to aid in creating separate compiled objects that will get linked together at a later point. In SystemVerilog, you put both prototypes and implementations in a package, and then import the package. You can resolve some compilation order dependencies by using forward typedefs, but everything must be resolved within the package.
As mentioned, some people find it easier to read when you separate the class declaration from the implementations. It also makes it easier to protect your code by encrypting the implementations and leaving the declarations public.