「言うまでもなく、継承の概念をサポートしない言語機能は”クラス”
と呼ぶに値しません。」〜『Python チュートリアル』by Guido van Rossum〜
……いや、公平に言えば、アラン・ケイは継承とか多態性とか、言って
なかったんだけどなぁ……
> > 継承という楽しみ/手抜きが出来ないのは、そのへん辛いです。
>
> var Klass = function();
> Klass.prototype = new Super();
> Klass.prototype.hoge = function() {
> };
> Klass.prototype.fuga = function() {
> };
>
> がそんなにイヤだと。
匿名関数をオブジェクトとしてつっこむのは、なかなかナイスな書き方
ですし、私も好きです。
が、それが強要されるのはイヤだなぁ。
※フツーに書くときは、私だってクラス定義の中でメソッドを定義
します。
> Klass.hoge = function() {
> };
> Klass.fuga = function() {
> };
>
> でもいいわけですが、それもイヤだと。
「きらいになれない〜でもじゅうぶんじゃない〜」(by 『魔法騎士レイアース』)
そう書けるのは愉快(そうやって書けないJavaよりはもちろん)ですが、それ
がスタンダードなのはやっぱ居心地が悪いっす。
> というかプロパティをコピーしまくる関数一つ書けばいいんですけどそれも
> イヤだと。
んだから、やろうと思えば出来ますが、そこまでやるなら、なんで最初から
継承させてくんないのか、と言いたいわけです。
必要ならやりますし、JavaScript習い始めた頃はやりましたよ、ええ。
※私は先にJavaを覚えたので……あの頃はまだ、Pythonを知らなかったんだ
よなぁ。
> まぁイヤなのはいいんですけど、「継承できない」とあまり声高に言われる
> となんだかなぁという感じが…。だって継承っていう概念がないんだからでき
> るわけないし、でも似たようなことはできるので「継承できないから嬉しくな
> い」というのもちょっと外れている気もするんですよねぇ。
継承の概念が無い、ということは、継承に価値を見出していない、ということ
ですよね。
だって、同じことが出来るなら、シンタックスシュガーを書くだけです
から。
私はそれも、一理あるとは思います。
多重継承でなくとも、継承によって隠蔽されることによる問題は少なくない
でしょうから。
言語機能として『できない』という言葉が、よもや『実装した技術者が
技術的な限界で』と解釈する人は、まずいないでしょう。
とすると積極的に「できない」わけですから、その意味は「継承という
テクニックを前提としていない、あるいは推奨していない」言語ですよね。
その哲学に「そーかな、便利だし、見やすくもできるんだけどなー」とか
思うのだけです。
でもまぁ、繰り返しになりますが、クラス/オブジェクトを学習するのに、
JavaScriptはやめたほうが良いでしょう……ってトコぐらいですかねぇ。
/機械伯爵/