web-dev-qa-db-ja.com

インスタンスとオブジェクトの違いは何ですか?

インスタンスとオブジェクトの違いは何ですか?違いはありますか?

71
streetparade

インスタンスはメモリ内のオブジェクトです。基本的に、オブジェクトを作成し、それらを使用しているときにインスタンス化します。

これはクラス対オブジェクト対インスタンスに関する素晴らしい記事です。彼はJavaですが、すべてのオブジェクト指向に適用されます。

http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/

45
Dustin Laine

あまりにも多くの時間を消費するはずの大きな違いはありません。一部の人々は書くために多くのスペースを取るかもしれないいくつかの派手な言語があるかもしれませんが、一日の終わりには、コーダー、開発者、プログラマー、アーキテクトに関する限り、クラスのインスタンスとオブジェクトは同じことを意味し、しばしば同じ意味で使用できます。私のキャリアの中で、うるさくて、違いを指摘しようとして30分を費やす人は誰もいませんでした。他の開発作業により時間を費やすことができます。

[〜#〜] update [〜#〜] Swiftに関して、これはApple誰が発明したかSwiftが好む:

クラスのインスタンスは伝統的にオブジェクトとして知られています。ただし、Swiftクラスと構造は他の言語よりも機能がはるかに近いため、この章の多くでは、クラスまたは構造タイプのインスタンスに適用できる機能について説明しています。より一般的な用語インスタンスが使用されます。

47

素晴らしい質問です。

できるだけ簡単な方法で説明します。バスケットにリンゴが5個あるとします。これらのリンゴはそれぞれ、Appleタイプのオブジェクトであり、いくつかの特性を持っています(つまり、大きく、丸く、木に生えています)。

プログラミング用語では、変数size:big、shape:round、habitat:growsをツリーに持つAppleというクラスを作成できます。バスケットにリンゴを5個入れるには、instantiate 5リンゴが必要です。 Apple apple1, Apple apple2, Apple apple3 etc...

あるいは、オブジェクトは何かの定義であり、インスタンスは物理的なものです。

これは理にかなっていますか?

23
Yuval Karmi

インスタンス:インスタンスは、参照(コピー)を作成することを意味します。

オブジェクト:new演算子を使用して、メモリロケーションがオブジェクトに関連付けられている(クラスのランタイムエンティティである)ことを意味します。

簡単に言えば、インスタンスは特定の時点でのオブジェクトのコピーを指し、オブジェクトはクラスのメモリアドレスを指します。

9
karthik reddy

いくつかの椅子を作っているとしましょう。

椅子を組み立てて組み立てる方法を示す図は、ソフトウェアクラスに対応しています。

その図のパターンに従って5つの椅子を構築するとします。同様に、クラスのパターンに従って5つのソフトウェアオブジェクトを構築できます。

各椅子には、特定の椅子を識別するために座席の底に焼き付けられた一意の番号があります。椅子3は、椅子オブジェクトの1つのインスタンスです。同様に、メモリロケーション3にはソフトウェアオブジェクトの1つのインスタンスを含めることができます。

したがって、インスタンス(椅子3)は、オブジェクト(椅子)の単一の固有の特定の表現です。

8
Brian Showalter

オブジェクト

これは一般的な用語であり、基本的には状態(変数)と動作(メソッド)を持つソフトウェアバンドルです。

クラス

オブジェクトインスタンスのブループリント(テンプレート)。これは一意のオブジェクトです。たとえば、オブジェクトを2回作成すると、2つのインスタンスが作成されます。

例を挙げましょう

Class student()
{
   private string firstName;
  public student(string fname)
  {
    firstName=fname;
  }
  Public string GetFirstName()
  {
    return firstName;
  }
}

オブジェクトの例

Student s1 = new student( "Martin"); Student s2 = new student( "Kumar");

S1、s2にはクラスStudentのオブジェクトがあります

インスタンス

s1とs2はオブジェクトスチューデントのインスタンスであり、2つはuniqueです。

referenceとしても呼び出すことができます。

基本的にs1とs2はオブジェクトに割り当てられる変数です

6
Durai Amuthan.H

オブジェクトとインスタンスはほとんど同じです。しかし、非常に小さな違いがあります。 Carがクラスの場合、3つのCarsは3つの異なるオブジェクトです。これらのオブジェクトはすべてインスタンスです。したがって、これらの3台の車はCarクラスのインスタンスからのオブジェクトです。

ただし、「インスタンス」という言葉は「構造インスタンス」も意味します。しかし、オブジェクトはクラス専用です。

すべてのオブジェクトはインスタンスです。すべてのインスタンスがオブジェクトである必要はありません。インスタンスは、「構造インスタンス」または「オブジェクト」です。これによって違いが明確になることを願っています。

オブジェクトは、プロパティやメソッドなどの特定の機能と特性を持つ静的な構造体であり、何でもかまいません(文字列、ユーザーコントロールなど)

インスタンスは、そのオブジェクトの一意のコピーであり、使用して処理を行うことができます。

コンピューターのような製品を想像してください。

Xw6400ワークステーションはオブジェクトです

YOUR xw6400ワークステーション(またはYOUR WIFEのxw6400ワークステーション)は、xw6400ワークステーションオブジェクトのインスタンスです

4
Greg Olmstead

インスタンスは、オブジェクトの特定の表現です。オブジェクトは一般的なものですが、インスタンスはメモリ内に作成された単一のオブジェクトです。通常、インスタンスには、そのタイプのオブジェクトの他のインスタンスと区別するプロパティに値が割り当てられます。

2
TLiebe

オブジェクト-独自の状態を持ち、クラスによって定義されたすべての動作にアクセスできるクラスのインスタンス。

インスタンス-特定のクラスのメモリ領域への参照。

2
prathipati s

各オブジェクトはそのクラスのインスタンスであると言いましたが、クラスの各インスタンスは各属性に対して独自の値を持ちます。インスタンスは属性の名前と操作をクラスのインスタンスと共有します

1
user2750565

クラス:クラスは青写真です。オブジェクト:クラスのコピーです。インスタンス:オブジェクトのメモリアドレスを保持するために使用される変数。

非常に基本的な分析例

クラスハウス->家の設計図。しかし、あなたは青写真で生きることはできません。住むクラスのインスタンスである物理的な家が必要です。つまり、オブジェクトの実際の住所はインスタンスです。インスタンスはオブジェクトを表します。

1
Sindhu

オブジェクトとインスタンスオブジェクトの定義が表示される場合-

実行時にクラスのメンバーに割り当てられたメモリはオブジェクトと呼ばれ、オブジェクトはクラスのインスタンスです。

インスタンスの定義を見てみましょう-

割り当てられたメモリFor Any実行時にインスタンス変数として呼び出されます。

これでanyの意味を理解できます

struct p
{

}
p *t1
t1=(p) malloc(sizeof(p))

したがって、ここでも実行時のメモリ割り当てを割り当てていますが、ここではインスタンスとして呼び出しているため、t1はインスタンスとしてここではt1とは言えません。したがって、すべてのオブジェクトはクラスのインスタンスですが、すべてのインスタンスはオブジェクトではありません。

1
Vivek Kumar

クイックアンドシンプルアンサー

  • クラス仕様、オブジェクトの青写真
  • オブジェクトメモリ内のクラスの物理的存在
  • インスタンスオブジェクトの一意のコピー(同じ構造、異なるデータ)

Javaはオブジェクト指向プログラミング言語(OOP)です。これは、プリミティブ型を除くJavaのすべてがオブジェクトであることを意味します。

ここで、Javaオブジェクトは現実世界のオブジェクトに似ています。たとえば、現在の速度や色などのプロパティを持つJavaで車のオブジェクトを作成できます。

それはObjectです。

enter image description here

Instanceは、反対側で、Car car = new Car()のように見えるオブジェクトの一意に初期化されたコピーです。

Javaクラスとオブジェクト の詳細をご覧ください

1
Johnny

オブジェクトをクラスにすることができます。たとえば、バスケットボールというクラスがあるとします。

ただし、複数のバスケットボールを持ちたいので、コード内で複数のバスケットボールを作成します

basketball1とbasketball2と言います。次に、アプリケーションを実行します。これで、オブジェクトバスケットボールの2つのインスタンスができました。

0
Darxval

オブジェクトは一般的なものです。たとえば、数学で線形関数を取ります

ax + bはオブジェクト、3x + 2はそのオブジェクトのインスタンス

Object <<<インスタンス

一般<<<特定

これにはこれ以上何もありません

0
Chyanit Singh

(newを使用して)クラスをインスタンス化すると、そのインスタンス化されたものがオブジェクトになります。オブジェクトとは、カプセル化、ポリモーフィズム、オブジェクト指向プログラミングの抽象化原則、およびクラスで定義されたインスタンスメンバーを消費するためにプログラムが対話する実際のものを順守できるものです。オブジェクトにはインスタンスメンバー(非静的メンバー)が含まれます。

したがって、クラスのインスタンスはオブジェクトです。 「インスタンス」という言葉は、それが生まれた起源を指すときに使用されますが、「クラスのオブジェクト」と比較して「クラスのインスタンス」と言う方が明確です(後者は使用できます)。

このJavaネストされたクラスに関するドキュメント- https://docs.Oracle.com/javase/tutorial/Java/javaOO/nested。 html

0
p_champ

objectinstanceの違いに関しては、コンセンサスはないと思います。

論文、ブログ投稿、本、会話など、人々はそれをほぼ同じように変えているように思えます。

私の考えでは、オブジェクトはメモリ内のジェネリックで生きているエンティティであり、使用される言語によって指定されます。ObjectJavaクラスと同様です。コンテナで管理されているかどうかに関係なく、そのタイプやそれに関連する他の何かはあまり気にしません。

instanceobjectですが、this method accepts Foo instancesまたはyou can not put Animal instances in an instance of a List of Vehiclesのように型に関連付けられています。

たとえば、objectsにはlockssではなくinstancesが関連付けられていますが、instancesにはメソッドがあります。 objectsはガベージコレクションであり、instancesではありません。

しかし、私が言ったように、これは私がそれを見る方法だけであり、それらの間の標準的な定義のために参照できる組織はないと思います。誰もがわずかに異なる理解/定義を持っています(もちろん制限内) 。

0
Koray Tugay