独自言語 続

便りが無いのは仕事が楽しい証拠。
 
そんなわけで独自言語もだいぶできあがってきた。
・static変数
・switch
・for
・short, byte への対応
・組み込み済みクラスの作成
 
残りの作業はこんなものか。
ほとんどC++ライクにゲームを組むことができる。
継承はプログラマが生み出した文化の極みだね。
 
一通り作り終わったら、次は最適化という楽しい仕事が待ってるわけで。(*´∇`)
しかし一回使い始めちゃうと、互換性を保つのが面倒なんですよねぇ。
「組み込み済みクラス」もID管理だから、後からID順を変えたくなっても変えられない。
いや、IDを変えるなって話ですがついつい並び替えしたくなるじゃないですか。
 
 
しかし調べれば調べるほど、C++Javaは違うものだと実感しますね。
例えばコンストラクタの中でオーバーライドされたメソッドを呼び出す場合。
C++ではオーバーライド前のメソッドが呼び出され、Javaではオーバーライド後のメソッドが呼び出されます。
(これ、C++でハマるのの1つだよなぁ)
 
他にもC++はvirtualとすればどんなメソッド(staticは別ね)でも継承されますが、Javaではprivateなメソッドは継承されません。
C++でついprivateなメソッドをvirtualにしてしまい、別の人が知らずに同名でオーバーライドしてしまったら…。危ないなぁ。
 
C++はどのようなアクセス制限(publicとか)から、どのようなそれにオーバーライド時変更しようとも文句を言われません。
Javaは protected -> public 以外は全てエラーです。(protectedは、publicな別名同引数関数でラップすることでpublic化できちゃうので許したんだろうな)
 
Javaは複数個のインスタンスを1アクションでまとめて生成することができません。糞が。