10月14日の学び

  • デザインパターンの本を読んでいて初めて知ったけど、継承においてスーパクラスとインタフェースはどちらも子クラス/実装クラスを代入可能という点では共通なのね。
  • スーパークラス→抽象クラス→インタフェースの順に抽象化・パーツ化が上がっていく。

スーパークラス

  • Java5以降のバージョンでは、正しくオーバーライドしていることをコンパイラにチェックさせるために@Overrideというアノテーションを明示的につけることが推奨
  • 子クラスのオブジェクトは親クラスの型と代入互換性がある
  • 宣言されている変数の型ではなく、実際に変数に代入されているインスタンスの型によって実行時の振る舞いが決まる
  • つまり子クラスが親クラスの型を持っているが、実行時の振る舞いは代入されているインスタンスで決まる(ポリモーフィズム
  • フィールドは同一名称であっても決してオーバーライドできない
  • staticメソッドもオーバーライドできず、ポリモーフィズムが存在しない

抽象クラス

インタフェース

インタフェースはスーパークラスから余分なものを削りきった後に残るもの。インタフェースは単一機能のみ。

  • 継承による型の継承とポリモーフィズムという点を究極に推し進めたものとしてインターフェースが定義可能
  • インタフェースも上と同様に実装した子クラスの代入が可能
  • インタフェースのメンバ変数はすべてpublic finalの定数扱い
  • クラスは複数の機能(メソッド)を持つが、インタフェースは単一機能にのみ絞った部品化の極限。

d.hatena.ne.jp

JavaScript

  • ユーザ側で実行されるためサーバとの通信する必要がない(そもそも発生しない)

Node.js

  • サーバサイドで実行されるJavaScript
  • シングルスレッドで非同期処理
  • サーバサイドでJavaScriptを実行可能なプラットフォーム

www.slideshare.net