ここから本文です

java初心者です オブジェクト化とインスタンス化の違いがいまいちわかりません。 ...

アバター

ID非公開さん

2017/6/1417:15:19

java初心者です
オブジェクト化とインスタンス化の違いがいまいちわかりません。
File file = new File();
↑これはインスタンス化ですか?オブジェクト化ですか?

File file = new File("C:\\hoge\hoge.txt");
これは何をしているのでしょうか?
hoge.txtをhoge フォルダに作成したのかと思えばfile.existsをすれば存在しません。
fileoutputatream("C:\\hoge\hoge.txt");をすれば作成されるのでしょうか
同じインスタンス化ではないのでしょうか?

閲覧数:
151
回答数:
4

違反報告

ベストアンサーに選ばれた回答

tri********さん

2017/6/1423:40:32

インスタンスはオブジェクトに含まれる,という意見に私も一票。
だから,インスタンス化をオブジェクト化と呼んでもいい,という意見に対しても「強いて言うなら」まあ賛成できます。

私にとって「インスタンス化」というのは,クラス(ひな形,鋳型)から実体を生成する行為です。Javaのコードではこう書くというレベルの下位層の用語になります。

それに対して私にとって「オブジェクト化」という表現は,Javaのコード云々といったような下位層ではなく,「クラス設計」「カプセル化」「オブジェクト指向」とほぼ等しい上位層の概念になります。システム設計対象となる物事を「自律したモノ(オブジェクト)」同士の相互作用として捉える作業。それが「オブジェクト化」という用語にふさわしいと考えています。

----------------
File file = new File();

クラスを基にして実体を生成していますから,インスタンス化です。

File file = new File("C:\\hoge\hoge.txt");

これもインスタンス化です。File()コンストラクタにはファイルを新規作成する機能はありません。既存のファイルを指定すればfile.exists()はtrueになるはずです。hoge\hoge.txtではなく,hoge\\hoge.txtとこちらも\は2つです,ご注意を。

ファイルを作成するならこんな感じ。
File file = new File("C:\\hoge\\hoge.txt");
System.out.println(file.exists());
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.exists());

アバター

質問した人からのコメント

2017/6/21 09:07:12

インスタンス化はプログラム的な考えでオブジェクト化は概念的な考えですかね?
ありがとうございました

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

e00********さん

2017/6/1515:42:55

文章の内容から、ファイル作成がオブジェクト化と思われていませんか。
あくまで、オブジェクトやインスタンスは、プログラム上でおこることで、外部のファイルを作るとはは、ファイル操作で、オブジェクトやインスタンスと関係ありません。
オブジェクトというのは、java.io.Fileやらjava.lang.Stringとかの、クラスの型のことを指し
インスタンスはnewで使えるようにすることを指します。

key********さん

2017/6/1421:44:46

http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.3...
An object is a class instance or an array.

Javaでのオブジェクトは

クラスのインスタンス または 配列

のことです。(つまり「インスタンス」と言ったときは配列は含まれないが、「オブジェクト」と言ったときは配列も含まれる)

なので

> File file = new File();
> ↑これはインスタンス化ですか?オブジェクト化ですか?

インスタンス化、と言ってもいいし、オブジェクト化と言ってもいいです。


> File file = new File("C:\\hoge\hoge.txt");
> これは何をしているのでしょうか?

http://docs.oracle.com/javase/jp/8/docs/api/java/io/File.html
ファイルおよびディレクトリのパス名の抽象表現です。

って明確に書いてあります。

「ファイルやディレクトリ」を表現するオブジェクト ではなくて
「ファイル名やディレクトリ名」(という抽象的な概念)を表現するオブジェクトです。

だからFileのインスタンスを作ってもファイルが作られるわけじゃありません。

tar********さん

2017/6/1421:44:33

オブジェクトとインスタンスというのは基本的には同じ意味だと思います。
若干ニュアンスに違いがあるとすると、
インスタンスには「クラスという雛型が実体化したものを一個つくったモノ」みたいな感じがただようぐらいでしょうか。

File クラスの file は、ファイルそのものではなく、
「バインダーに紙が挟んであって、ファイルの名前や場所が書き込んであるようなモノ」
と考えるのがよいと思います。
それ自体はファイルではないけど、ファイルに関する作業するときの情報をまとめてあるようなもの。
この file を使うと、その書かれている情報に基づいて
存在するかどうか、サイズはどうか、読み取り専用かどうか、そんなことを調べられるとか、
入出力するためのオブジェクトを作るときにつかえる。
そんな感じかと。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる