情報系大学院生のブログ

貴重な経験を忘れないようにブログを書いています。よければ見ていってください!まめな性格ではないので、投稿日と実際の日は基本ずれまくります。

すっきりわかるJAVA入門を読んで

すっきりわかるJAVA入門を読んで

自分の研究分野がオブジェクト指向なのにコードがうまく書けない、きれいな設計ができないという危機的な状況だった。友達との雑談でその話になったときこの本を紹介してくれたのでこの本を読むことにした。得た知見をいかにまとめることにする。

 

オブジェクト指向の面白さ

オブジェクト指向の本質はオブジェクトを作成することで仮想世界を形成するところにあると著者はいう。ここでいうオブジェクトとは作成したいシステムを形成する物体であったり、人間であったり、概念である。つまりそれらをプログラマは1つずつ生成することでシステムを作るそれがオブジェクト指向である。著者曰く、オブジェクト指向においてプログラマは創造神なのである。ここにオブジェクト指向の面白さがあると著者は述べる。

 

オブジェクト指向のポイント

著者はオブジェクト指向の一番のポイントとして「現実世界をマネするべし」と述べている。私たち人間が慣れ親しみよく把握している現実世界をマネして作られたプログラムもまた、私たち人間にとって把握しやすいものだからである。

 

新たな知見

  • フィールドにアクセスする際は必ずthisを付けること
  • インスタンスを生成したクラス型の変数には本当は配列と同じで先頭アドレスが格納されている
  • 複数コンストラクタを作成した際、一方のコンストラクタからもう一方のコンストラクタを生成するにはthisを使う。例えばcon("name"){ とcon("name","age"){  があったときcon("name"){内でthis(name,19);と書くことで2つ目のコンストラクタを実行することができる。
  • クラスが持つstatic変数はクラスを宣言していない状態でも代入することができるる。Hero.money = 100とか
  • staticはstatic宣言したものがクラスに属するようになるイメージ。クラス名.static宣言したものでインスタンスなしに呼び出せる。ただしstaticメソッド内で非staticのフィールドなどは使用できないので注意。何に使うかはピンとこない。
  • メソッドはすべてpublicフィールドはすべてprivate
  • setterでアクセス制限することができる

 

  • 抽象クラスは未来への知見、新しいクラス図を作るときにextendsする
  • 抽象クラスではabstractをうまく使う。abstractを付けることで子クラスで必ず実装しなければならなくなる。
  • 抽象クラスの中でもフィールドを持たないものをinterfaceという
  • interfaceのメソッドは基本すべて未定、つまりこいつを継承するクラスにはこういう機能(メソッド)を付けておけ!というイメージ
  • interfaceのメソッドは未定なのでinterfaceを多重継承することは可能
  • interfaceを継承するときはinplementsだがinterfaceでinterfaceを継承するときはextendsなので注意