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

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

4 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 =]]

6 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 =]]

3 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.

4 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
6 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.

3 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à.

5 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

4 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:

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