17 Stimmen

Kann ich Java-ähnliche Schnittstellen in Perl erstellen?

Ich weiß, dass das OO-Modell von Perl ziemlich primitiv ist; es ist in den meisten Aspekten im Wesentlichen ein Namespace-Hack.

Dennoch frage ich mich, ob es möglich ist, so etwas wie eine "Schnittstelle" zu schaffen? Mein Ziel ist es, eine Basisklasse zu haben, von der andere erweitert werden, deren Hauptzweck es ist, die Implementierung bestimmter Methoden (mit Namen ist in Ordnung, keine Signatur notwendig) durch diese Unterklassen verbindlich zu machen. Es ist mir eigentlich egal, ob es sich um eine "rein virtuelle" Klasse (wie eine "Schnittstelle" in Java) oder eine konkrete Klasse mit tatsächlichen Implementierungs-Stubs für diese Methoden in der Oberklasse handelt, aber was ich möchte, ist, dass es deterministisch notwendig ist, dass die Unterklasse bestimmte Methoden der Oberklasse implementiert.

Ist das möglich? Wenn ja, wie?

1voto

Chas. Owens Punkte 62716

Einfache Lösung, die zur Laufzeit Fehler erzeugt:

package SomeVirtualClass;

use strict;
use warnings;

use Carp;

sub some_method { croak "virtual method some_method not overridden" }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X