2011-12-27 42 views
16

Gần đây, một người phỏng vấn yêu cầu xác định sự khác biệt giữa các đối tượng và nguyên thủy. Dường như một câu hỏi kỳ quặc xem xét rằng tất cả các ngôn ngữ bắt đầu với một nguyên thủy. Bạn sẽ trả lời câu hỏi này như thế nào?đối tượng so với nguyên thủy

Tôi cũng nên lưu ý rằng cuộc phỏng vấn này là cho một vị trí phát triển front-end vì vậy ngôn ngữ (tôi giả định) ông được đề cập đến là JavaScript.

+2

Bạn đã đề cập rằng bạn cho rằng người phỏng vấn đang đề cập đến JavaScript. Tôi nghĩ rằng bạn nên hỏi anh ta chỉ để chắc chắn - không có điểm đoán về những gì anh ta hỏi khi một câu hỏi đơn giản sẽ làm rõ điều đó. –

+1

Lời khuyên tốt, xác định những gì ông đã nhận được tại đã có thể giúp đỡ. –

Trả lời

30

Nguyên thủy là loại dữ liệu không bao gồm các loại dữ liệu khác và không thể chia nhỏ thêm nữa. Nó giống như các nguyên tử trong kịch bản lập trình. Tôi nói nguyên tử bởi vì nguyên tử là một đơn vị cơ bản của vật chất và không có gì có thể bắt nguồn từ nó.

Ý tôi là, không thể chia nhỏ int trong C thành loại dữ liệu nhỏ hơn. Một đối tượng, mặt khác có thể được nghĩ đến một phân tử, bao gồm nhiều hơn một loại nguyên thủy. Ví dụ: string là một phần của thư viện chuẩn C++; tuy nhiên, nó là một đối tượng và nó bao gồm các kiểu dữ liệu nhỏ hơn trong nội bộ và chứa các phương thức. Điều quan trọng cần lưu ý là không phải tất cả ngôn ngữ hướng đối tượng đều dựa trên lớp (ví dụ: Javascript) Bạn không thể định nghĩa một lớp trong Javascript, do đó một đối tượng hoàn toàn khác ở đây. Mặc dù mọi thứ trong Javascript là một đối tượng (Ruby cũng), đối tượng Number thực sự là một trình bao bọc cho một nguyên thủy bên trong.

7

Từ Java quan điểm:

  1. Một nguyên thủy không bao gồm các loại dữ liệu khác. Ở đâu như một đối tượng có thể được và nói chung là.
  2. Nguyên thủy được chuyển theo giá trị, tức là bản sao của nguyên thủy tự nó được chuyển. Trong khi đối với các đối tượng, bản sao của tài liệu tham khảo được thông qua, không phải chính đối tượng đó.
  3. Nguyên thủy là các loại dữ liệu độc lập, nghĩa là không tồn tại một phân cấp /siêu cấp cho chúng. Trong khi mọi Object là hậu duệ của lớp "Object".
  4. Mỗi đối tượng có một số phương pháp mặc định của chính nó, nó thừa hưởng từ đối tượng lớp (ví dụ: toString(), clone(), wait(), notify(), notifyAll(), v.v.). Các nguyên thủy không có bất kỳ phương thức nào được liên kết với chính chúng.
  5. Nguyên thủy là không thay đổi, chúng có thể được sử dụng như vậy mà không cần chăm sóc đặc biệt . Trong khi đối với các đối tượng, cần chú ý đặc biệt, chúng là không thay đổi theo mặc định.
  6. Với các đối tượng, có hai loại bản sao, Nông và Sâu. Có là sự khác biệt đáng kể giữa chúng. Vì vậy, lựa chọn phụ thuộc vào cách chúng tôi dự định sử dụng chúng. Với nguyên thủy, không có sự khác biệt như vậy , tất cả mọi thứ là theo mặc định bản sao sâu chỉ.
Các vấn đề liên quan