From: shugo@... (Shugo Maeda) Date: 1998-03-10T11:54:00+09:00 Subject: [ruby-dev:1638] Re: IO#putc/Kernel#putc/Kernel#putchar 前田です。 In message "[ruby-dev:1630] Re: IO#putc/Kernel#putc/Kernel#putchar" Yukihiro Matsumoto wrote: |ええと,Javaには詳しくないんですが,このprivateはC++的なプラ |イベートすなわちそのメソッドを定義しているクラスからしか見え |ないメソッドのことですよね. | |現在のprivateでサブクラスのチェック(kind_of?)をしている部分 |をそのクラスかどうかのチェック(member_of?)にすることによって |似たものは実現できるとは思いますが, | | * rubyには静的結合が無いのでサブクラスで再定義できてしまう | |という重要な問題があるので意味があるかどうか判りません. Javaだと再定義されてもスーパークラスの他のメソッドから呼ぶ時は 元のメソッドが呼ばれるようになってますよね。 class Foo { private void foo() { System.out.println("Foo::foo"); } public void bar() { foo(); } } class Bar extends Foo { public void foo() { System.out.println("Bar::foo"); } public static void main(String[] args) { (new Bar()).foo(); /* => Bar::foo */ (new Bar()).bar(); /* => Foo::foo */ } } これができないとあまり意味がないですよね。 # 最近今更ながらMeyerの「オブジェクト指向入門」を読んだのですけど、 # Meyerならfinalもprivateもどちらもダメと言いそうですね(^^; -- 前田 修吾