| Refresh | Home EGTry.com

perl object inheritance, methods overriding by derived class


my $base=new BaseClass();
$base->baseMethod1();
$base->baseMethod2();

my $sub1=new SubClass1();
$sub1->baseMethod1();
$sub1->baseMethod2();
$sub1->subMethodA();


my $sub1=new SubClass2();
$sub1->baseMethod1();
$sub1->baseMethod2();
$sub1->subMethodB();

package BaseClass;

sub new {
  my $class=shift;
  my $self={};
  bless $self, $class;
  return $self;
}

sub baseMethod1 {
  my $self=shift;
  print "baseMethod1 in BaseClass\n";
  return $self;
}

sub baseMethod2 {
  my $self=shift;
  print "baseMethod2 in BaseClass, expected to be overridden\n";
  return $self;
}

package SubClass1;

use base qw(BaseClass);

sub new {
  my $class=shift;
  my $self={};
  bless $self, $class;
  return $self;
}

sub subMethodA {
  my $self=shift;
  print "subMethodA, new method in SubClass1\n";
}

sub baseMethod2 {
  my $self=shift;
  print "baseMethod2 has been overriden by SubClass1\n";
}

package SubClass2;

use base qw(BaseClass);

sub new {
  my $class=shift;
  my $self={};
  bless $self, $class;
  return $self;
}

sub subMethodB {
  my $self=shift;
  print "subMethodB, new method in SubClass2\n";
}

sub baseMethod2 {
  my $self=shift;
  print "baseMethod2 base been overriden by SubClass1\n";
}