http://www.perlmonks.org?node_id=915834


in reply to Re^4: Moose role with requirement consuming another role
in thread Moose role with requirement consuming another role

I think you'll like these
http://en.wikipedia.org/wiki/Abstract_type
http://c2.com/cgi/wiki?AbstractBaseClass
http://c2.com/cgi/wiki?AbstractClass
My understanding matches Arunbears, abstract classes aren't concrete, they can be a contract (virtual/interface), or actually do stuff (traits/roles), but you can't make an instance.
  • Comment on Re^5: Moose role with requirement consuming another role

Replies are listed 'Best First'.
Re^6: Moose role with requirement consuming another role
by Boldra (Deacon) on Jul 21, 2011 at 11:20 UTC
    Thanks for those definitions.

    This statement:

    In CeePlusPlus, a class that has any PureVirtual member functions is an abstract base class.
    seems to suggest that, at least for C++, an abstract base class is the same as an abstract class.

    However, I still think it's clear that while all Moose roles are abstract classes (they cannot be instantiated), only those Moose roles which do nothing more than list 'requires' are abstract base classes. None of the Moose roles I am using are abstract base classes.

    Update: Having read more about the "interface role", I've changed my mind. What I called an abstract base class above is really an interface-only role. Arunbear recognized this in the beginning. I don't have any of these in my real code.



    - Boldra