私はJavaの初心者で、OOPの概念のさまざまな定義を調べましたが、クラスとオブジェクトの概念を本当に理解したことがないので、誰かが私にこれを説明してください. オブジェクトがクラスのインスタンスであるとだけ言わないでください。それは正確にはどういう意味ですか? 例が役立ちます
5 に答える
ほとんどの OOP 言語では、「オブジェクト」は一連のアクションまたは操作を実行できるデータ構造であり、「クラス」はオブジェクトに含まれる (またはアクセスできる) データと、何を定義するために使用される手段です。実行できる操作、または実行できる操作。
物体
- オブジェクトとは、有形無形を問わず、私たちが想像できるものです。
クラス
- クラスは、オブジェクトができることとできないことを指示するテンプレート定義です
- クラスは、オブジェクトの作成元となるプロトタイプです
まず最初に、 The Java (tm) Tutorialsを読むことをお勧めします。Udacityでビデオを視聴しても問題ありません。
public class Student {
private int id;
private String major;
private Integer age;
public Student(int id, String major, Integer age){
this.id = id;
this.major = major;
this.age = age;
}
public int getId() {
return this.id;
}
public String getMajor() {
return this.major;
}
public Integer getAge(){
return this.age;
}
. . .
}
したがって、このインスタンスのオブジェクトはデータ型Integer
であり、プリミティブ オブジェクトはint
です。id
、major
、のそれぞれは のage
インスタンス変数ですStudent
。コンストラクターを使用してオブジェクトを作成します。コンストラクターを開始するたびに、新しいインスタンスが作成されます (すべてのインスタンスは最後のインスタンスとは異なります)。
クラスは何かの定義です。オブジェクトはその 1 つです。
最も一般的な例の 1 つは車です。クラスがあるとしますCar
。そのクラスは、車に関するすべてを定義します。車を説明するサイズ、色、メーカー、モデル、およびその他のものはプロパティと呼ばれます。
車は、移動、加速、方向転換、後退、シフトなどの操作も実行できます。これらはメソッドと呼ばれます。それらは車ができることです(一部の言語ではこれらを「アクション」と呼んでいますが、これはより適切な用語だと思います)。
プロパティとメソッドを組み合わせてグループにすると、それをclassと呼びます。これは、一緒に車 (または定義するもの) を定義するためです。
オブジェクトは車のインスタンスです。それはそれを置くための最も簡単な方法です。しかし、インスタンスとは何ですか?ウィキペディアによると:
オブジェクト指向プログラミングでは、インスタンスはオブジェクトの出現またはコピーです。
インスタンスをオブジェクトと呼び、その逆も同様です。ただし、技術的には、オブジェクトは、他の場所で参照できる値を持つメモリ内の場所です。簡単にするために、この 2 つを組み合わせて同じ意味にします。インスタンスはオブジェクトであり、オブジェクトはインスタンスです。
短くする
おそらく、私が言える最短の方法は次のようになります。
クラスは定義であり、オブジェクトはその定義に適合するものです。
Java でのアプリケーション
質問に Java のタグを付けたので、Java での例を続けます。車に戻りましょう。
上記のコードは次のようになります。
class Car {
/* Properties */
int size;
Color c;
String make;
String model;
/* Constructor */
Car() {
// constructor code...
}
/* Methods */
void move() { }
void accelerate() { }
void turn() { }
void reverse() { }
void shift() { }
}
ここでは、各グループにラベルを付けました。上部にプロパティがあります。物事は車を説明しています。メソッドは一番下にあります。車ができること。
しかし、途中で何か他のものを入れました。これは、ほぼすべてのクラスで必要とされるものです:コンストラクター。コンストラクターが行うことは、クラスをオブジェクトにインスタンス化することです。
上記で作成した定義を使用して、最後の文を次のように書き換えることができます。
コンストラクターは、クラスの発生をメモリ内の場所に配置します。
うまくいけば、これがクラスをよりよく理解するのに役立ちます。
クラスは、オブジェクトの定義と見なすことができます。オブジェクトのタイプを構成するものについての考え方。オブジェクトはそのクラスの例です。
私が今見ているような(OSではなく、現実世界の)ウィンドウを取ります。「ウィンドウ」はクラスです。定義された操作 (open()) とプロパティ (高さと幅) があります。私が外を見ているこの特定のウィンドウ (この Window のインスタンス; この Window クラスのオブジェクト) は、クランクを回すことで開くことができ、高さ 60 インチ、幅 30 インチです。Java では:
class Window {
int width;
int height;
void open() {
}
}
Window myWindow = new Window(); //instance of the class
myWindow.width = 30;
myWindow.height = 60;
myWindow.open();