クラスメソッドとインスタンスメソッド

  • クラスメソッドとは第一引数にクラス名をとる関数である。
  • インスタンスメソッドとは第一引数にクラスのインスタンスをとる関数である。

っちゅうことで。



package Hoge;

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

sub name {
my $self = shift;
my $name = shift;
if(defined($name)){
$self->{"name"} = $name;
} else {
return $self->{"name"};
}
}

sub say_hello {
print "Hello!!";
}

1;

てなときには、


use Hoge;

# new()はクラスメソッド
my $obj = Hoge->new();

# name()はインスタンスメソッド
my $name = $obj->name('summersoldier');

# say_hello()はクラスメソッド的
Hoge->say_hello();

でよいのでしょうか?