class a {
public static void main(String[] args) {
System.out.println("A");
}
}
このプログラムでインスタンスはありますか?でしたら、それは何ですか?
また、違えば、例えばどういうのがプログラム中のインスタンスですか?
ソースを書いて教えて下さい!簡単なプログラムでお願いします。
現状では単なる文字の羅列です。
(ソースコード a.java)
↓
コンパイルで実行可能な状態になります。
(クラスファイル a.class)
↓
インスタンス化
実際に動く状態になればインスタンスです。
(直接実行 java a.class あるいは他のクラスで利用 new a)
http://q.hatena.ne.jp/1383527402
このプログラムでインスタンスはありますか?でしたら、それは何ですか?
あります。
System.out は、java.io.PrintStream クラスのインスタンスです。
自分で new して作らなくても、用意されているインスタンスというのがあります。
例示されたプログラムには、次のインスタンスがあると言えると思います。
「自分で new しなくても、インスタンス化されるクラスが用意されています」だと思いますが…。
2013/11/11 04:35:36それはさておき、
7667SMさんが難しく考えすぎなのか、私が考えすぎなのか…、
よくわからなくなってきました…。
根底の部分は、これだけの話のはずなのですが…。
1.自作のクラスを呼び出せば実体化(インスタンス化)されてインスタンスとなる。
2.既存のクラスを呼び出した場合も実体化(インスタンス化)されてインスタンスとなる。
文字でニュアンスを伝えるのは難しいですが、ぼくのイメージはちょっと違います。
というか、その文章からぼくが受けるイメージと、ぼくが回答に書いたときにイメージしていたことがちょっと違います。
例えば、質問にある System.out は、java.io.PrintStream のインスタンスですが、
うぃんどさんが書いてくれた文章から、ぼくが受けるイメージは、「そのクラスのインスタンスは、明示的に new しなくても良い」です。
2013/11/11 17:12:04# そういう意図は無いのかもしれませんが。
7667SM さんは、本当に「インスタンスって何?」と思ってるだけなんだと思います。
ぼくも手続型言語から OO に手を付けたクチなので、とても分かります(と、思い込んでます)。
java のようなオブジェクト指向な言語の中では、「クラスを呼び出す」という言い方に違和感があります。
クラスをインスタンス化して、それに対してメッセージを送る(メソッドを呼び出す)というイメージです。
順番として、働きかける相手があって、その次にアクションがある。
だから「インスタンス化 (instantiation)」という言い方が使われるのだと思います。
実行モジュールのプロセスイメージを「インスタンス」と呼ぶ流儀は知ってます(Win32API とかをバリバリ使ってたときもあったので)。
前の質問でも「Javaの……」あったので、触れませんでした。