perldoc > Class::Virtually::Abstract

🏷️ NAME

Class::Virtually::Abstract - Compile-time enforcement of Class::Virtual

🚀 Quick Reference

Use CaseCommandDescription
Declare virtual methodsuse base qw(Class::Virtually::Abstract); __PACKAGE__->virtual_methods(qw(new foo bar this that));Define a virtual class that forces subclasses to implement listed methods.
Implement subclasspackage My::Private::Idaho; use base qw(My::Virtual::Idaho); sub foo { ... }Create a concrete subclass; must implement all virtual methods or compilation fails.
Use subclass (compilation check)use My::Private::Idaho;Triggers compile-time check — if any virtual method is missing, the use statement fails.

📝 SYNOPSIS

  package My::Virtual::Idaho;
  use base qw(Class::Virtually::Abstract);

  __PACKAGE__->virtual_methods(qw(new foo bar this that));


  package My::Private::Idaho;
  use base qw(My::Virtual::Idaho);

  sub new { ... }
  sub foo { ... }
  sub bar { ... }
  sub this { ... }
  # oops, forgot to implement that()!!  Whatever will happen?!


  # Meanwhile, in another piece of code!
  # KA-BLAM!  My::Private::Idaho fails to compile because it didn't
  # fully implement My::Virtual::Idaho.
  use My::Private::Idaho;

📖 DESCRIPTION

This subclass of Class::Virtual provides compile-time enforcement. That means subclasses of your virtual class are required to implement all virtual methods or else it will not compile.

🐛 BUGS and CAVEATS

Because this relies on import() it is important that your classes are used instead of required. This is a problem, and I'm trying to figure a way around it.

Also, if a subclass defines its own import() routine (I've done it) Class::Virtually::Abstract's compile-time checking is defeated.

Got to think of a better way to do this besides import().

👤 AUTHOR

Original idea and code from Ben Tilly's AbstractClass
http://www.perlmonks.org/index.pl?node_id=44300&lastnode_id=45341

Embraced and Extended by Michael G Schwern <schwern AT pobox.com>

🔗 SEE ALSO

Class::Virtual

Class::Virtually::Abstract
🏷️ NAME 🚀 Quick Reference 📝 SYNOPSIS 📖 DESCRIPTION
🐛 BUGS and CAVEATS
👤 AUTHOR 🔗 SEE ALSO

Generated by phpman v4.9.29 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-07-22 01:25 @2600:1f28:365:80b0:d8a5:c3c6:bf94:28c0
CrawledBy CCBot/2.0 (https://commoncrawl.org/faq/)
Valid XHTML 1.0 Transitional!Valid CSS!
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format