Lecture

マルチメディアプログラミング実習 2016年10月27日

第6章 クラスの基礎

クラスとインスタンスの説明をしました。復習しましょう。

http://gyazo.com/bbdd3587977a172f7fa7f00c4f5787e0.png

クラスメソッド、クラス変数は、クラスに聞きます。

インスタンスメソッド、インスタンス変数は、インスタンスに聞きます。

例えば、上の例で、クラス名がTaiyakiでインスタンスがtaiyaki1, taiyaku2,...だとすると、 クラスメソッド、変数は、

Taiyaki.yaku();

とか

Taiyaki.seizousuu

とかしてアクセスします。

インスタンスメソッド、変数は、

taiyaki1.taberu()

とか

taiyaki2.ondo

とかしてアクセスします。

第7章 クラスとオブジェクトの操作

7.1 オーバーロード

先週、説明しました。教科書pp.101--104を読んで復習してください。 (10分)

他の点との距離を返すメソッドの例を使ってオーバーロードを説明しました。

	double distance ( int ptx, int pty ) {
		int dx = ptx - this.x;
		int dy = pty - this.y;
		return  Math.sqrt(dx * dx + dy * dy);
	}
	
	double distance ( Point p ) {
		return this.distance(p.getx(), p.gety());
	}

distanceという名前は同じでも、引数の違いで、異なる動作をさせることができます。

7.2 コンストラクタ

今まではnew Point()と言うようにしてインスタンスを作っていました。 Point()と言うメソッドは、クラスメソッドの特別なものです。 インスタンスを作るときに、他にやってほしい仕事をコンストラクタに書くことができます。

教科書のpp.104--107を読んでください。(10分)

前回作ったPoint3Dクラスに、new Point(10,20,30)をするとx,y,z=10,20,30の点を作ってくれるコンストラクタを書いてみてください。

7.3 インスタンスの参照

pp.107--109を読んでください。(10分) インスタンスを指している変数を理解してください。Cで言う所のポインターになっています。

7.4 ガーベージコレクション、ファイナライザ

7.4節を読んでください(5分)

Cではmalloc()して得たメモリーは、いつかは、free()してあげないと、どんどんメモリーを消費してしまうプログラムになってしまいます。 メモリーを要求するだけで返却しないプログラムが、メモリーをどんどん浪費していく現象は、 メモリーリークとも呼ばれます。 一見動いていても、長時間動かしていると落ちてしまうタチの悪いバグです。

Javaでは使わなくなった(参照されなくなった)インスタンスが使うメモリーを、自動的に返却する機能、ガーベージコレクション(ゴミ集め)があります。 なので、free()に相当することをやらなくて良いのです。

インスタンスが破棄される直前に、何かの処理をしたい場合は、finarize()メソッドを定義しておきます。

7.5 インスタンスのメンバとクラスのメンバ

7.5節を読んでください。プログラム7.4も読んでください(15分)

メンバというのは変数とメソッドの総称です。

staticなメンバとは、クラス変数、クラスメソッドのことです。

staticではないメンバが、インスタンス変数、インスタンスメソッドになります。

7.6 ファイナル変数

7.6節を読んでください(5分)

C言語では#define文で定数を定義することがありました。 Javaにはそういう仕組みがありません。 定数を定義したいときには予約語finalを使います。 これはこの後変更されない変数になります。

7.7 アクセス制御

7.7節を読んでください(5分)

publicとprivateは知っておくと良いです。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS