Instance và object khác nhau gì không?

hình vuông là hình tứ giác/hcn có 4 cạnh bằng nhau. Hình vuông là trường hợp đặc biệt của hcn. Thiếu 4 chữ trường hợp đặc biệt hay 4 cạnh bằng nhau rồi :V :V

chắc mình phải edit lại, A định nghĩa là B thì A, B là 1. Object định nghĩa là instance của class thì obj và ins là 1.

7 Likes

Không ngờ chỉ có instance và object mà tốn nhiều thời gian, tiền điện và tiền mạng như thế

7 Likes

Link 1:


Link 2:

Link 3:
https://www.quora.com/What-is-the-difference-between-object-and-instance/answer/Amandeep-Verma-16?ch=10&share=6aa6e138&srid=uDtR9L
Có vẻ như vấn đề này được tranh luận ở khá nhiều diễn đàn và hầu hết đề cho rằng instance và obj là 2 thứ gần như là giống nhau, có thể sử dụng như nhau nhưng khác về bản chất và sử dụng khác môi trường. Nghe có vẻ giống iterator với pointer nhỉ.

Như trên đây thì chỉ là almost thôi
Em cũng chưa có nhiều kiến thức về OOP bằng mọi người ở đây nhưng hầu hết các nguồn em tìm hiểu đều nói như thế. Tất nhiên là vẫn rất nhiều nguồn nói chúng là 1 nhưng em nghĩ cũng không quan trọng lắm vì là 1 hay không thì khi sử dụng nó cũng chỉ coi như là cái tên gọi thôi. Có từ gần nghĩa mà. Đối tượng là 1 ví dụ thực tế của class.

1 Like

Object thì có thể đứng một mình được, còn instance phải là instance của 1 class nào đó. Nghĩa là, object có thể thuộc hay không thuộc class, nhưng instance thì bắt buộc phải thuộc 1 class nào đó.

Ví dụ như ngôn ngữ sida JavaScript đi, JS không có class, nên nó chỉ có object thôi. Sẵn cà khịa JS. :v

7 Likes

Kiểu như function với method đúng không ạ??

4 Likes

Hmm, cũng có thể giống như vậy đó. :thinking:

5 Likes

Cái này còn thiếu Lua và các ngôn ngữ lập trình prototype-based nói chung :V

4 Likes

vạch lá tìm sâu vạch tất cả các NNLT tìm sự khác biệt giữa obj và ins :expressionless:

4 Likes

trong cái link quora:

Nobita = Males(“blank”,0)
Here when you write Males(…) , an object is created and the name which refers to that object (Nobita) is called an instance of that object .

bậy bạ, ko biết Python định nghĩa thế nào nhưng reference to object mà gọi là instance thì là giải thích bậy bạ. Nó gọi là reference.

cái link wp thì bó tay, đâu ra đẻ ra khái niệm instance tách riêng object và class thành khái niệm thứ 3 >_>
https://docs.oracle.com/javase/tutorial/java/concepts/object.html
https://docs.oracle.com/javase/tutorial/java/concepts/class.html
Java doc class và object, ko có cái thứ 3 gọi là instance. Trong 2 link này thì chỉ có 1 từ instance duy nhất trong câu

Each bicycle was built from the same set of blueprints and therefore contains the same components. In object-oriented terms, we say that your bicycle is an instance of the class of objects known as bicycles. A class is the blueprint from which individual objects are created.

nghĩa là instance ở đây dùng để giải thích nghĩa cho thứ tạo ra theo nguyên mẫu class thay vì dùng từ object lần nữa :V :V

comment về cái link wp đó đây:
image

câu trả lời đúng đây:

This is view from Structural Programming. There’s no real significant difference that should consume too much of your time. There might be some fancy language that some people might take up a lot of spaces to write about, but at the end of the day, as far as a coder, developer, programmer, architect, is concerned, an instance of a class and an object mean the same thing and can often be used interchangeably. I have never met anyone in my career that would be picky and spend half hour trying to point out the differences, because there’s really none. Time can be better spent on other development efforts.

mới mở OOP chân kinh gặp câu đầu tiên có object vs instance mà mất cả buổi ko lật qua trang được thì chắc luyện 10 năm cũng chưa xong chân kinh =]] Java doc rất hay ở chỗ ko xài từ instance =]

ko biết có chỗ nào phỏng vấn hỏi sự khác biệt giữa obj và ins, bé nào chém gió nửa tiếng thì cho về luôn =]]

8 Likes

Nói chung là gần như chẳng có cái quy tắc chung gì về OOP cả, mỗi ngôn ngữ chém mỗi kiểu, cứ tự hiểu trong đầu là OOP của mỗi ngôn ngữ khác nhau (trừ cái lấy đối tượng làm trung tâm, 4 tính chất cơ bản, đều có thể áp dụng SOLID,…) cho nó nhanh =]]

4 Likes

Câu này được hiểu như nào @@:
Object reference not set to an instance of an object

MyClass obj = new MyClass();

Khi lệnh trên thực hiện, ta có thể hiểu 1 object được tạo ra. Nhưng phía sâu bên trong, có 2 thứ riêng biệt đã đồng thời được tạo ra. Đó là :
obj : Tham chiếu.
instance : dữ liệu của đối tượng đang nằm đâu đó trên RAM. obj sẽ trỏ tới dữ liệu này.

Object là các gọi chung của một thứ bao gồm cả 2 thành phần là tham chiếu + instance. Nếu instance không tồn tại, khi truy cập sẽ là nguyên nhân của NullException.

5 Likes

Theo như tôi hiểu, thì:

  1. Object là thực tại khách quan, dù ta có nhìn nhận như thế nào thì object vẫn là như vậy, ta chỉ có thể tác động vào object theo những cách mà object đó cung cấp.

  2. Instance là thực tại khách quan được phản ánh lại theo ý thức của con người. Với mỗi object, ta lại định danh cho nó theo một interface nào đó. Cho nên là cùng một object, nó có thể là instance của class A, instance của interface B… Khi ta định danh nó với một khái niệm cụ thể, thì ta sẽ tìm cách tương tác nó theo khái niệm cụ thể đó, tương tự với việc ta ép kiểu để sử dụng các hàm của class vậy.

  3. Vì instance là ý thức chủ quan nên đôi khi nó không đúng hoặc không phù hợp với thực tại khách quan:

Dog d = new Dog();
Animal a = d;
Cat c = (Cat)a;//Yo, wtf man?
c.meow();//Gâu gâu
7 Likes

Tranh luận vô ích, tiếng Anh cũng giống tiếng Việt, dùng từ tương đối thôi.

4 Likes

Biết là vô ích, nhưng thớt hỏi thì phải ráng tìm lý do cho nó khác, miễn là logic :v

Chứ 2 khái niệm giống nhau mà.

6 Likes

Same thôi, Viết code nếu viết kiểu này:

 Object a = new Car();

Đọc nôm na tiếng Việt là tạo 1 "đối tượng "mà thế hiện của nó là 1 chiếc xe…
Mà trong java khi khởi tạo đối tượng nó có 3 phase:

Declaration: The code set in bold are all variable declarations that associate a variable name with an object type.
Instantiation: The new keyword is a Java operator that creates the object.
Initialization: The new operator is followed by a call to a constructor, which initializes the new object

Note: The phrase “instantiating a class” means the same thing as “creating an object.” When you create an object, you are creating an “instance” of a class, therefore “instantiating” a class.

https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

5 Likes

Có mấy cách để tạo ra 1 obj trong 1 ngôn ngữ nhỉ :thinking:
Instance là 1 obj của 1 class cụ thể.
Một obj nếu được tạo ra bằng toán tử new thì có thể được gọi là instance


Thế nhưng obj thì không chỉ được tạo ra bởi new.
Vậy có thể nói instance là 1 obj nhưng vì 1 lý do nào đó đặc biệt ở toán tử new nên chỉ có các obj được tạo bằng new mới đc gọi là instance.

Hình vuông là 1 hình chữ nhật nhưng do phải có 4 cạnh bằng nhau nên chỉ những hình chữ nhật có 4 cạnh bằng nhau mới gọi là hình vuông.
Chốt lại là khác nhau ở new…
Nói thế đúng không nhỉ :thinking: . Còn new có cái gì đặc biệt thì em chịu…

2 Likes

Đọc qua thấy new trong java chẳng khác gì new trong C++ phục vụ heap allocation :thinking: :thinking:
Chơi với C/C++ vẫn vui hơn, chả lo mấy cái lằng nhằng này làm gì :relieved: :relieved:

6 Likes

This is what I learnt from my seniors in my company about the difference between instance and object.
Basically use instance to when you’re talking about only one particular object, and use object to talk about many objects.
This is similar to word function in C or C++ for refering block of code. But in Java, we call them as methods.

3 Likes

Thế cái object của dog là con nào ạ?

Chẳng qua mấy thứ về phần mềm không sờ được mà cũng khó nhìn thấy được, tính trừu tượng cao dẫn đến lúng túng, thực sự cái này mình đã bàn đến ở đây: Phân biệt object và instance?

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?