気ままにSE備忘録

クラスとオブジェクト

最終更新:

knowledge_library

- view
メンバー限定 登録/ログイン

オブジェクト指向プログラミング

  1. 継承 すでにあるクラス定義を利用して新しいクラスを定義する機能
  2. カプセル化 オブジェクトの独立性、安全性を高める機能
  3. ポリモーフィズム(多態性) 同じメソッドでもオブジェクトの種類により違う動作をする機能

  • クラスはプログラム実行機能とオブジェクトの定義機能を持つ
  • オブジェクトは値をメソッドを一つにパックしたものである
  • ひとつのオブジェクト定義から複数のオブジェクトを作ることができる
  • オブジェクトは実行用クラスのmainメソッドの中で作成する
  • プログラム作りはどのようなオブジェクトを作ることを考えることから始まる
  • プログラムの処理はオブジェクトの機能を利用して組み立てる
  • オブジェクト指向プログラミングの3大要素は、「継承」、「カプセル化」、「多態性(ポリモーフィズム)」

フィールドの定義

  • フィールドはクラスの属性をあらわす
  • フィールドを表す変数をフィールド変数(インスタンス変数、メンバ変数)という
  • フィールド変数はクラス定義の中に直接書く
  • 定義ではフィールド変数に具体的な値は入れない

オブジェクトの作成

  変数 = new クラス名();

new演算子で作成されたオブジェクトはヒープ(JVMが管理するメモリ領域)に保管される

クラスの仕組み


コンストラクタ

コンストラクタを作成すると、オブジェクト作成時に特定の値をフィールドにセットできる

コンストラクタの書き方
pubic クラス名 (引数1,,,){
 
  }
 
  • コンストラクタの名前はクラス名(型名)と同じ
  • 戻り値型(return)を書かない  (voidも書かない)
  • publicは省略可能

コンストラクタのオーバーロード

&bold(){複数のコンストラクタを定義すること}
  • 引数の数が違う (int a, String b) <> (int a)
  • 引数の並び順が違う (int a, String b) <> (String b, int a)
デフォルトコンストラクタと同じ引数のないコンストラクタをオーバーロードすれば、コンパイルエラーを回避できる

インスタンスメソッド

オブジェクトの中で働くメソッドをインスタンスメソッドという
これに対し、mainメソッドのように書いてそのまま実行できるメソッドはクラスメソッドという
使用するにはメンバ参照演算子で指定する

インスタンスメソッドとフィールドの関係

  • インスタンスメソッドはフィールド変数を利用できる
  • フィールド変数に何かの値が設定されていることを前提にプログラムを書く
  • 引数の方が違う (int a, String b) <> (double a, String b)

staticと静的メンバ

public void show() //インスタンスメソッド
  public static void show() //クラスメソッド
 

staticの付いたメンバ変数はクラス変数、メソッドはクラスメソッドと呼び、
2つを総称して静的メンバ、クラスメンバともいう

参照と参照型

new演算子はオブジェクトを作成し、ヒープ(メモリ領域)に置きます。そしてnew演算子は単に参照と呼ばれる特殊な値を返します。
すべてのオブジェクトはメモリ領域に置かれていますが、参照はその中ら特定のオブジェクトを瞬時に探し出すための索引キーです

オブジェクトの方をクラス型といい、そしてクラス型と配列型、インタフェース型をまとめて参照型といいます。
参照型は参照を使ってオブジェクトにアクセスする方の総称です。これらの方の変数を一般に参照変数といいます。

参照変数の仕組み

  • クラス型、配列型、インタフェース型を総称して参照型という
  • 参照型の変数にはオブジェクトではなく参照が入っている
  • 参照を使うといつでもオブジェクトにアクセスできる

  1. 初期化されていない参照変数は使えない
  2. nullではメンバを参照できない
  3. 参照変数同士の代入は参照のコピーになる
ウィキ募集バナー