B has similar functionality to A. A returns some data, B writes the data to a file, but in a different format than the data returned from A. Under some circumstances, the data written to the file from B is in the exact same format as the data returned from A.[base] / \ / \ [subclass A] [subclass B]
However, I don't want B to inherit A's methods as I don't want the user accessing them from the object. In other words, I might have
What I don't want ismy $object = A->new; $object->someWeirdMethod;
But that happens if I inherit from A, unless I write a bunch of methods to trap those calls and let the user know they shouldn't do that.my $object = B->new; $object->someWeirdMethod;
The alternative seems to be having B instantiate an A object, but having subclasses instatiating instances of each other strikes me as problematic. I keep up that habit and I might start winding up with circular references that I'll have to explicitly destroy.
Summary: two options that I see:
- Have B inherit from A, but don't let people call A's methods from B.
- Have B instantiate an instance of A. I like this better, but somehow it feels wrong.
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.