未分類

クラス型の変数

投稿日:

              

クラスの基本で下記のようにオブジェクトを作成していました。

chara1のようにオブジェクトをさす変数を、Character型の変数と呼びました。さらに、newを使ってオブジェクトを作成し、クラス型の変数に「代入」をしています。

オブジェクトを作成するときでなくとも「代入」することができます。

上記のコードでは、オブジェクトを1つ作成して、Character型の変数chara1に代入しています。次にもうひとつCharacter型のchara2を宣言しました。

「chara2 = chara1;」という代入をしています。つまり、クラス型の変数には

同じクラス型の変数を代入することができます。

chara1とchara2から同じ出力が行われているので「キャラ」オブジェクトが2つ存在しているように見えます。しかし、実際はオブジェクトが2つ存在するわけではありません。

「キャラ」オブジェクトの属性と体力量を変更しました。

chara1とchara2を使い属性と体力量を出力してみると、どちらも同じように変更されているのがわかります。つまり、

変数chara1と変数chara2は異なる2つのオブジェクトではなく、同じ1つのオブジェクトをさしている

のです。このしくみには十分注意しておきましょう。

nullのしくみを知る

変数にnullという値を代入すると、その変数はオブジェクトをさし示さなくなります。

そのオブジェクトがどの変数からも扱われなくなった場合、メモリがオブジェクトを作成する前の状態に戻ります。このことを、ガーベッジコレクションといいます。

ただし、2つの変数が同じオブジェクトをさしていたときは、一方にnullを代入しただけでは、オブジェクトは破棄されないことに注意してください。

メソッドの引数として使う

下記のコードでは、String型の変数をメソッドの引数としています。このため、メソッドにキャラの名前をあらわす文字列を渡すことができるのです。

オブジェクトを配列で扱う

オブジェクトを配列で扱うには、配列を準備することが必要です。

int型の配列を準備する場合と同じですが、

実際のオブジェクトを作成し、配列要素がそのオブジェクトをさすように代入

という作業が必要です。オブジェクトを1つずつ作成して、配列要素に代入します。newが使われるので、忘れないようにしましょう。

クラスの応用方法について学びました。

クラスライブラリを使うと、高度な機能を簡単に実現可能です。クラス型の変数のしくみやオブジェクトを扱う配列は、欠かせない知識です。しっかり理解しておきましょう。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

練習問題

練習問題  HelloWorld.java 以下のプログラムの空欄を埋めて実行結果のように表示させてください。 練習問題  ChangeXY.java 下のプログラムの空欄を埋めてアイテムAとアイテム …

サンプルイメージ

はじめてのAndroidアプリ作成

     文字列を描画するプログラムを作り解説します。 ソースコードの追加 ソースコードを追加する手順は次の通りです。今回は、「StringEx」と「StringView」の2つを追加します。 ①プロ …

サンプルイメージ

クラスライブラリのしくみ

                 今まで、クラスの基本について学びました。これまでは以下のような手順でクラスを作成してきました。 クラスを設計するコードを書く → クラスを宣言するクラスを利用するコー …

サンプルイメージ

演算子の優先順位

a + 2 * 5  2*5が先に評価されます。 この式では、+演算子と*演算子の2つが使われています。通常の四則演算では、たし算よりかけ算を先に計算します。これは、かけ算の方が 優先順位が高い から …

サンプルイメージ

クラス変数、クラスメソッド

      これまでのコードは、クラス内のメンバ(フィールドとメソッド)は、オブジェクトが作成されたときに、はじめて値を格納したり呼び出したりすることができました。 オブジェクトを作成することによって …