独習Java勉強中 no.1
オブジェクトの等価性がよくわかんないような?
オブジェクトは確実に二つ存在しているんだからコンストラクタは2回呼び出されるのかと思ったのに、そんなことはないのかな?
つまりオブジェクトはコピーすれば、コンストラクタを呼び出す必要はないと?
(そういえば、ずっと前に『C++のからくり』っていう本の中に「コピーコピーコンストラクタ」っていう章があった気がする。)
// Counter.java public class Counter { public static int count = 0; private int number; Counter(int in) { number = in; count++; } public void setNum(int in) { number = in; } public int getNum() { return number; } } // TestCounter.java public class TestCounter { public static void main(String[] args){ Counter c1 = new Counter(10); System.out.println("Counter : " + Counter.count); Counter c2 = c1; c1.setNum(20); System.out.println("Number : " + c2.getNum()); System.out.println("Counter : " + Counter.count); } }
output
Counter : 1
Number : 20
Counter : 1
- 作者: ジョゼフ・オニール,武藤健志,トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2008/05/29
- メディア: 大型本
- 購入: 1人 クリック: 55回
- この商品を含むブログ (21件) を見る
- 作者: スティーブン・R.デイビス,Stephen R. Davis,瀬谷啓介
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/08
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (3件) を見る
まぁ、そもそもC++が初心者向け言語ではないので。
C言語は実務経験はないけど大体分かっていた自分にはそれなりに理解できていた気がします。
JDEEって依存関係をすべてAnt or Makefileで記述せんといけんのでしょうか?
クラスをオブジェクト用クラスCounter(っていう説明は変かな?コンテナとでもいうべきか)とmain用クラスTestCounterを準備してJDEEでコンパイルしました。
そうしたら、Counterクラスは普通にコンパイルできるのにTestCounterはできませんでした。
Counterクラスのシンボルが解決できないっていうので、何でだろうと思いながら、試しに普通にeshellで試してみたら問題なくコンパイルできました。
これってつまり、多少でも依存関係のあるファイルはMakefileまたはAntを使わないといけないっていうことなんでしょうか?