はじめまして。吉田と申します。
先月頃からRuby(1.8.3 linux)を趣味で使い始めました。
現在、下のような感じで、標準添付ライブラリのmatrix.rbにある
Matrixクラスを継承したクラスを作ろうとしているのですが、

require 'matrix'

class YaMatrix < Matrix
  def new_method_for_yamatrix
  end
end

コンストラクタの動作が下のようになり戸惑っています。

m = YaMatrix.identity(2)
p(m.class)
=> Matrix     # YaMatrixになってほしい

m = YaMatrix[[1,0],[0,1]]
p(m.class)
=> YaMatrix   # これはOK

私はRubyの流儀がよく分かっていませんので、これが仕様なのか
判断できません。御存じの方から何かアドバイスを頂ければ幸いです。
ちなみに、

matrix.rb中で、

def Matrix.identity(n)
  Matrix.scalar(n, 1)
end

のような箇所がいくつかありますが、

def Matrix.identity(n)
  self.scalar(n, 1)
end

では不都合があるのでしょうか?そのようになっていれば、私の
意図するように振る舞ってくれると思うのですが。