javaとjapascriptを同時に学んでいる初心者なのですが、
classとobjectの違いが今ひとつわかりません。二つの言語によって意味は変わりますか?
class gorilla {
String name;
String age;
String bloodType;
};
gorillaのage,name, bloodtypeなどゴリラの情報をまとめたものがclass
旭山動物園の、太郎くん、よしこちゃんという具体例を考えた時、
太郎くん(ゴリラ)
よしこ(メスゴリラ)
tarou
yoshiko
がインスタンス
という理解であってますか?
ではobjectは???と聞かれるとclassとの違いがよくわかりません。。。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
言葉の定義の話は前提でどうとでも変わるので難しいです。
"Object"は
ものすごく広い意味では、
何らかのデータ構造であり、
メモリ上に値として存在し、
名前を通じてアクセスできる。ものです
この文脈だと例えばint x = 0
のx
はオブジェクトです。
またこの文脈だと関数もオブジェクトです。
オブジェクト指向の文脈だと
「データと、それに対する操作を持つもの」になります。
"Class"は
クラスベースのオブジェクト指向において
オブジェクトの型であり、テンプレートです。
例えば、32ビット浮動小数点数を表すオブジェクトのグループを
いろんな言語でfloat
と呼称します。
(そのいろんな言語は単なる数値を表す型をクラスと呼ばないことが多いですが)
そしてJavaやC#などなどでは、何らかのオブジェクトの型をクラスと呼ぶ(一部例外あり)ので、
じゃあすべてのクラスの大本の型の名前は"Object"クラスだ!と命名していたりします。ややこしい。
で、"Instance"は、実際に生成されたオブジェクトのことです。
あるクラスAを元にして作られたオブジェクトのことを指して、
「Aクラスのインスタンス」などと呼びます。
とまあ文脈でいろいろ意味が変わります。
Javaだったら
オブジェクト=インスタンス=データの実体
クラス=オブジェクトの型
オブジェクトクラス = Javaのすべてのクラスの基底クラス
ぐらいの認識で問題ないと思います。
投稿2016/03/04 04:33
編集2016/03/04 04:59総合スコア13521
0
ベストアンサー
人(class)
・・ 太郎(インスタンスA)
・・ 花子(インスタンスB)
オブジェクト指向は普段↑のように学ぶと思いますが、その上に立つのがObjectです。
もの(Object)
・・人(class)
・・・太郎(インスタンスA)
・・・花子(インスタンスB)
なので、全てのインスタンスはObject型で定義した変数に入れる事が出来ます。
Java
1public Class Human{ 2... 3} 4Objcet obj = new Human();
因みにJavaScriptにはクラスと言う概念がありません。
クラスのように使えるように頑張っているだけです。
投稿2016/03/03 09:58
編集2016/03/03 09:59総合スコア249
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/04 04:57
2016/03/04 08:44
2016/03/04 08:58
0
Javaでは一番親のスーパークラス(すべてのクラスのルートとなるクラス)がObject
クラスです。
一番親のスーパークラスをObject
に持つクラスのインスタンスはオブジェクトになります。
Javaではそれに属していない型もあって、プリミティブ型と言います。
プリミティブ型には、int
, float
などの数値型やboolean
などがあります。
プリミティブ型ではフィールドやメソッドなどを持たせることができません。
JavaScriptもすべてのクラスのルートとなるクラスがObject
クラスですが、数値型(Integer
など)もObject
クラスがルートなので、そこはJavaとは違います。
例えば、JavaScriptでは1.toString()
と書くことができますが、Javaではできません。
Javaではオートボクシングの機能によりプリミティブ型をオブジェクトのように振る舞わせることができますが、常にオブジェクトのように扱えるわけではありません。
投稿2016/03/03 09:45
総合スコア9390
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
tarou, yoshiko というのが Gorilla クラス(例文では class gorilla となっていますが、Javaに置いてクラス名の最初の1文字目は大文字で始めるのが一般的です。)の変数であり下記のような想定なら
仰る通りの理解で正しいですよ。
Javaについての文脈で object と言う場合はほぼ object = インスタンスと思ってもらっても構わないと思います。
java
1Gorilla tarou = new Groilla('tarou', 10, 'A'); 2Gorilla yoshiko = new Groilla('yoshiko', 8, 'B');
ただし JavaScript におけるオブジェクトとは {}
を使ったデータのことです。
上記の例をJavaScrioptで書くなら下記のとおりです。
javascript
1var tarou = { name: 'tarou', age: 10, bloodType: 'A' }; 2var yoshiko = { name: 'yoshiko', age: 8, bloodType: 'B' };
投稿2016/03/03 09:34
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/04 03:55
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/04 08:46