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

chào các Bạn, mình thấy 2 khái niệm này có khác nhau, theo cách hiểu của mình, object bao hàm cả instance, khi class, có phương thức hay biến static, thì lúc đó class đó gọi là object, còn khi dùng từ khóa new, mình gọi là instance, có Ai giống cách suy nghĩ của mình không?

public class Hamatim {
  private Hamatim() {}
  public static Hamatim getInstance() {
    return new Hamatim();
  }
}

Hamatim hamabeo = Hamatim.getInstance();
=> Object hamabeo là 1 instance của class Hamatim

4 Likes

=> , ý bạn là object và instance là 1?

1 Like

Chứ còn thế nào nữa :smiley: object X là instance của class.

6 Likes

Ở góc độ lập trình cơ bản thì instance là object. Nhưng 1 số chuyên ngành sâu hơn như đồ họa máy tính thì định nghĩa instance là 1 bản sao của 1 object. Nghĩa là render qua instance thì tương tự nhau nên tiết kiệm dc tài nguyên của GPU. Chi tiết thì rất phức tạp nên nói sơ qua vậy thôi :smiley:

7 Likes

ko có phức tạp,theo Bạn nói thì cái này là bản sao của đối tượng, tạo 1 vùng nhớ, nhưng nhiều thằng tham chiếu đến, nhưng ko ổn, vì 1 thằng thay đổi thì mấy thằng khác cũng chịu chung.

Sao bạn biết là nó không phức tạp được nhỉ.
Rõ ràng đây là đề cập tới mảng đồ hoạ máy tính, nên cần tối ưu hữu hiệu nhất. Đến cả việc copy vùng nhớ của object còn hạn chế bằng việc chỉ copy reference/pointer.

Còn việc 1 thay đổi, cả đám chịu thì cũng có thể coi là tính năng. Còn nếu muốn không bị thì có thể dùng const reference hoặc copy-on-write (COW), hoặc N cách phức tạp khác nữa.

5 Likes

Nghe cứ như “phân thân chi thuật” ấy :smiley:

4 Likes

ý mình là nó không phức tạp ở ngôn ngữ, còn tùy thuật toán độ phức tạp sẽ khác nhau

“An object is an instance of a class”, tức một object là 1 thể hiện của 1 class. Có nhiều cách nói, có thể nói instance là một mối quan hệ, ví dụ “Huy là con của Bố Già”, tương đương “Object Huy là instance của Class Godfather” (đại loại vậy ^^). Một class có nhiều instance, ví dụ Huy, Nam, Lan (Object) là con (instance) của Bố Già (Class) hay Bố Già (class) có nhiều con (instance) là Huy, Nam, Lan (Object), hay con (instance) của Bố Già (Class) là Huy, Nam, Lan (Object).

3 Likes

Việc dùng từ “Bố” và “con” ở đây dễ gây nhầm lẫn về mối quan hệ giữa “instance” và “class”, và nhầm lẫn với mối quan hệ kế thừa trong các ngôn ngữ hướng đối tượng.
Theo mình không nên dịch instance và class ra tiếng việt.

Về câu hỏi của chủ bài viết, mình có thể cung cấp góc nhìn của mình như sau:

  • Khi nói về thiết kế hệ thống, thì ta dùng từ Object. Ví dụ thiết kế một cơ sở dữ liệu lưu trữ thông tin khách hàng. Như vậy thông tin khách hàng có thể được xem là 1 Object.
  • Khi nói về cấu trúc dữ liệu, có thể đặc tả Object thông tin khách hàng ở trên dưới dạng 1 hoặc nhiều class. Trong class có đặc tả các đặc tính của thông tin khách hàng, và các phương thức có thể tác động lên đặc tính đó. Ví dụ phương thức thêm, xóa, sửa.
  • Khi nói về quản lý bộ nhớ, thực thi chương trình, thì instance là một bản sao, hay bản hiện thực của Class trên memory.

Về class và instance thì mình nghĩ mọi ngôn ngữ lập trình OOP đều có ví dụ khá dễ hiểu:

public class Dog{

  int legs=4;
  int nose_sensitive = 1000;
  ...
}

Dog LuLu = new Dog(); 
Dog KiKi = new Dog();

Ở đây LuLu và KiKi là 2 instance của class Dog , class Dog mô tả 1 con dog là như thế nào :smiley:

6 Likes

2 cái là 1, tiếng Anh dỏm. Ví dụ thịt heo chúng nó ko nói là pig meat mà nói là pork, thì ở đây instance của class ko gọi là instance of class dài dòng mà gọi đơn giản là object.

6 Likes

Tiếng anh dỏm là sao bạn? ở đây mình nói theo nguyên văn của trang này hay wiki: https://www.javatpoint.com/object-and-class-in-java
https://en.wikipedia.org/wiki/Instance_(computer_science)

Chắc mình k để link ref nên bạn nghĩ là tiếng anh dỏm??? :smiley:

2 Likes

dỏm là vì nó gây hiểu lầm cho nhiều người tưởng object và instance khác nhau trong khi 2 cái là 1.

như trong cái link wiki kia :V

Formally, “instance” is synonymous with “object” as they are each a particular value (realization), and these may be called an instance object

lại chêm thêm instance object nữa bó tay tiếng Anh luôn =]]

còn cái link javatpoint kia lại đẻ thêm từ “entity” vào coi chừng lại hỏi sự khác nhau giữa object vs instance vs entity đó =]]]]]
nó viết câu này cũng được rồi viết thêm entity vào chi cho rối :V

An object is an instance of a class. A class is a template or blueprint from which objects are created. So, an object is the instance(result) of a class.

A là B thì A, B là như nhau, là 1. Tiếng gì mà gây hiểu lầm ngay từ mới bắt đầu học thì ko phải dỏm thì là gì :V :V

à đây Phân biệt Instance - Object - Entity - Class =]

7 Likes

wow, từ khi nào A là B thì 2 cái là 1 vậy bạn? hình vuông là hình chữ nhật vậy hình chữ nhật và hình vuông là 1?

3 Likes

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
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?