インスタンスとオブジェクトの違いは何ですか?違いはありますか?
インスタンスはメモリ内のオブジェクトです。基本的に、オブジェクトを作成し、それらを使用しているときにインスタンス化します。
これはクラス対オブジェクト対インスタンスに関する素晴らしい記事です。彼はJavaですが、すべてのオブジェクト指向に適用されます。
http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/
あまりにも多くの時間を消費するはずの大きな違いはありません。一部の人々は書くために多くのスペースを取るかもしれないいくつかの派手な言語があるかもしれませんが、一日の終わりには、コーダー、開発者、プログラマー、アーキテクトに関する限り、クラスのインスタンスとオブジェクトは同じことを意味し、しばしば同じ意味で使用できます。私のキャリアの中で、うるさくて、違いを指摘しようとして30分を費やす人は誰もいませんでした。他の開発作業により時間を費やすことができます。
[〜#〜] update [〜#〜] Swiftに関して、これはApple誰が発明したかSwiftが好む:
クラスのインスタンスは伝統的にオブジェクトとして知られています。ただし、Swiftクラスと構造は他の言語よりも機能がはるかに近いため、この章の多くでは、クラスまたは構造タイプのインスタンスに適用できる機能について説明しています。より一般的な用語インスタンスが使用されます。
素晴らしい質問です。
できるだけ簡単な方法で説明します。バスケットにリンゴが5個あるとします。これらのリンゴはそれぞれ、Appleタイプのオブジェクトであり、いくつかの特性を持っています(つまり、大きく、丸く、木に生えています)。
プログラミング用語では、変数size:big、shape:round、habitat:growsをツリーに持つAppleというクラスを作成できます。バスケットにリンゴを5個入れるには、instantiate 5リンゴが必要です。 Apple apple1, Apple apple2, Apple apple3 etc...
。
あるいは、オブジェクトは何かの定義であり、インスタンスは物理的なものです。
これは理にかなっていますか?
インスタンス:インスタンスは、参照(コピー)を作成することを意味します。
オブジェクト:new演算子を使用して、メモリロケーションがオブジェクトに関連付けられている(クラスのランタイムエンティティである)ことを意味します。
簡単に言えば、インスタンスは特定の時点でのオブジェクトのコピーを指し、オブジェクトはクラスのメモリアドレスを指します。
いくつかの椅子を作っているとしましょう。
椅子を組み立てて組み立てる方法を示す図は、ソフトウェアクラスに対応しています。
その図のパターンに従って5つの椅子を構築するとします。同様に、クラスのパターンに従って5つのソフトウェアオブジェクトを構築できます。
各椅子には、特定の椅子を識別するために座席の底に焼き付けられた一意の番号があります。椅子3は、椅子オブジェクトの1つのインスタンスです。同様に、メモリロケーション3にはソフトウェアオブジェクトの1つのインスタンスを含めることができます。
したがって、インスタンス(椅子3)は、オブジェクト(椅子)の単一の固有の特定の表現です。
オブジェクト:
これは一般的な用語であり、基本的には状態(変数)と動作(メソッド)を持つソフトウェアバンドルです。
クラス:
オブジェクトインスタンスのブループリント(テンプレート)。これは一意のオブジェクトです。たとえば、オブジェクトを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はオブジェクトに割り当てられる変数です
オブジェクトとインスタンスはほとんど同じです。しかし、非常に小さな違いがあります。 Car
がクラスの場合、3つのCar
sは3つの異なるオブジェクトです。これらのオブジェクトはすべてインスタンスです。したがって、これらの3台の車はCar
クラスのインスタンスからのオブジェクトです。
ただし、「インスタンス」という言葉は「構造インスタンス」も意味します。しかし、オブジェクトはクラス専用です。
すべてのオブジェクトはインスタンスです。すべてのインスタンスがオブジェクトである必要はありません。インスタンスは、「構造インスタンス」または「オブジェクト」です。これによって違いが明確になることを願っています。
オブジェクトは、プロパティやメソッドなどの特定の機能と特性を持つ静的な構造体であり、何でもかまいません(文字列、ユーザーコントロールなど)
インスタンスは、そのオブジェクトの一意のコピーであり、使用して処理を行うことができます。
コンピューターのような製品を想像してください。
Xw6400ワークステーションはオブジェクトです
YOUR xw6400ワークステーション(またはYOUR WIFEのxw6400ワークステーション)は、xw6400ワークステーションオブジェクトのインスタンスです
インスタンスは、オブジェクトの特定の表現です。オブジェクトは一般的なものですが、インスタンスはメモリ内に作成された単一のオブジェクトです。通常、インスタンスには、そのタイプのオブジェクトの他のインスタンスと区別するプロパティに値が割り当てられます。
オブジェクト-独自の状態を持ち、クラスによって定義されたすべての動作にアクセスできるクラスのインスタンス。
インスタンス-特定のクラスのメモリ領域への参照。
各オブジェクトはそのクラスのインスタンスであると言いましたが、クラスの各インスタンスは各属性に対して独自の値を持ちます。インスタンスは属性の名前と操作をクラスのインスタンスと共有します
クラス:クラスは青写真です。オブジェクト:クラスのコピーです。インスタンス:オブジェクトのメモリアドレスを保持するために使用される変数。
非常に基本的な分析例
クラスハウス->家の設計図。しかし、あなたは青写真で生きることはできません。住むクラスのインスタンスである物理的な家が必要です。つまり、オブジェクトの実際の住所はインスタンスです。インスタンスはオブジェクトを表します。
オブジェクトとインスタンスオブジェクトの定義が表示される場合-
実行時にクラスのメンバーに割り当てられたメモリはオブジェクトと呼ばれ、オブジェクトはクラスのインスタンスです。
インスタンスの定義を見てみましょう-
割り当てられたメモリFor Any実行時にインスタンス変数として呼び出されます。
これでanyの意味を理解できます
struct p
{
}
p *t1
t1=(p) malloc(sizeof(p))
したがって、ここでも実行時のメモリ割り当てを割り当てていますが、ここではインスタンスとして呼び出しているため、t1はインスタンスとしてここではt1とは言えません。したがって、すべてのオブジェクトはクラスのインスタンスですが、すべてのインスタンスはオブジェクトではありません。
クイックアンドシンプルアンサー
Javaはオブジェクト指向プログラミング言語(OOP)です。これは、プリミティブ型を除くJavaのすべてがオブジェクトであることを意味します。
ここで、Javaオブジェクトは現実世界のオブジェクトに似ています。たとえば、現在の速度や色などのプロパティを持つJavaで車のオブジェクトを作成できます。
それはObjectです。
Instanceは、反対側で、Car car = new Car()
のように見えるオブジェクトの一意に初期化されたコピーです。
Javaクラスとオブジェクト の詳細をご覧ください
オブジェクトをクラスにすることができます。たとえば、バスケットボールというクラスがあるとします。
ただし、複数のバスケットボールを持ちたいので、コード内で複数のバスケットボールを作成します
basketball1とbasketball2と言います。次に、アプリケーションを実行します。これで、オブジェクトバスケットボールの2つのインスタンスができました。
オブジェクトは一般的なものです。たとえば、数学で線形関数を取ります
ax + bはオブジェクト、3x + 2はそのオブジェクトのインスタンス
Object <<<インスタンス
一般<<<特定
これにはこれ以上何もありません
(newを使用して)クラスをインスタンス化すると、そのインスタンス化されたものがオブジェクトになります。オブジェクトとは、カプセル化、ポリモーフィズム、オブジェクト指向プログラミングの抽象化原則、およびクラスで定義されたインスタンスメンバーを消費するためにプログラムが対話する実際のものを順守できるものです。オブジェクトにはインスタンスメンバー(非静的メンバー)が含まれます。
したがって、クラスのインスタンスはオブジェクトです。 「インスタンス」という言葉は、それが生まれた起源を指すときに使用されますが、「クラスのオブジェクト」と比較して「クラスのインスタンス」と言う方が明確です(後者は使用できます)。
このJavaネストされたクラスに関するドキュメント- https://docs.Oracle.com/javase/tutorial/Java/javaOO/nested。 html
object
とinstance
の違いに関しては、コンセンサスはないと思います。
論文、ブログ投稿、本、会話など、人々はそれをほぼ同じように変えているように思えます。
私の考えでは、オブジェクトはメモリ内のジェネリックで生きているエンティティであり、使用される言語によって指定されます。Object
のJava
クラスと同様です。コンテナで管理されているかどうかに関係なく、そのタイプやそれに関連する他の何かはあまり気にしません。
instance
はobject
ですが、this method accepts Foo instances
またはyou can not put Animal instances in an instance of a List of Vehicles
のように型に関連付けられています。
たとえば、object
sにはlocks
sではなくinstance
sが関連付けられていますが、instance
sにはメソッドがあります。 objects
はガベージコレクションであり、instance
sではありません。
しかし、私が言ったように、これは私がそれを見る方法だけであり、それらの間の標準的な定義のために参照できる組織はないと思います。誰もがわずかに異なる理解/定義を持っています(もちろん制限内) 。