static static Fantastic! vol.5

Java

今朝投稿した記事だけど誰も釣られてくれないからプログラムを少し変更してみた。

jp\yucchi\static_sample_4\hoge.java

jp\yucchi\static_sample_4\chage.java

jp\yucchi\static_sample_4\Static_sample_4.java

VAL の値を標準出力させてみました。

run:
main() atart VAL = 1
CALL hoge
VAL = 10000
10000* 2 = 20000
main() end VAL = 1
構築成功 (合計時間: 0 秒)

hoge クラスの calc() メソッドが呼ばれてます。

main() メソッドの中にある calc() メソッドの引数の値は1のようです。

そして、calc(VAL) メソッドでよばれるのが hoge クラスなのは何故?

その答えは単純です。

static import 文をよく見てください。

chage クラスは static 変数である VAL だけをインポートしています。

よって、chage クラスの calc(VAL) メソッドは呼ばれることは無いんです。

hoge クラスの calc(VAL) が呼ばれて hoge クラスの VAL の値で計算されてしまいます。

なかなか面白いことになってますね。

引数の値よりクラスの static 変数が優先されてしまう。

chage クラスの calc(VAL) メソッドを実行させたかったら

次のようにインポート文を変更したらいい。

っていうか・・・ hoge クラス使わなきゃいいじゃん(^_^;)

Hatena タグ:

« »

Leave a Reply

* が付いている項目は、必須項目です!

次の HTML タグと属性を利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*

Trackback URL