Sự khác biệt giữa Phiên bản và Đối tượng là gì? Có sự khác biệt hay không?
Sự khác biệt giữa Phiên bản và Đối tượng là gì? Có sự khác biệt hay không?
Câu trả lời:
Một cá thể là một đối tượng trong bộ nhớ. Về cơ bản, bạn tạo đối tượng và khởi tạo chúng khi bạn đang sử dụng chúng.
Đây là một bài viết hay về Classes Vs Objects Vs Instances, anh ấy đang nói Java nhưng nó áp dụng cho tất cả các OO.
http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/
Phiên bản và Đối tượng là từ Lập trình hướng đối tượng .
Đối với một số ngôn ngữ lập trình như Java, C ++ và Smalltalk, điều quan trọng là phải mô tả và hiểu mã. Trong các ngôn ngữ khác được sử dụng trong Lập trình có cấu trúc, khái niệm này không tồn tại.
Đây là quan điểm từ Lập trình cấu trúc. Không có sự khác biệt đáng kể thực sự nào sẽ tiêu tốn quá nhiều thời gian của bạn. Có thể có một số ngôn ngữ ưa thích mà một số người có thể chiếm nhiều chỗ để viết, nhưng vào cuối ngày, đối với một lập trình viên, nhà phát triển, lập trình viên, kiến trúc sư, có liên quan, một ví dụ của lớp và object có nghĩa giống nhau và thường có thể được sử dụng thay thế cho nhau. Tôi chưa bao giờ gặp bất kỳ ai trong sự nghiệp của mình mà sẽ kén chọn và dành nửa giờ để cố gắng chỉ ra sự khác biệt, bởi vì thực sự là không có. Thời gian có thể được dành tốt hơn cho các nỗ lực phát triển khác.
CẬP NHẬT Liên quan đến Swift, đây là điều mà Apple, người đã phát minh ra Swift ưa thích:
Một thể hiện của lớp theo truyền thống được biết đến như một đối tượng. Tuy nhiên, các lớp và cấu trúc Swift gần gũi hơn về chức năng so với các ngôn ngữ khác và phần lớn chương này mô tả chức năng có thể áp dụng cho các thể hiện của một lớp hoặc một kiểu cấu trúc. Do đó, ví dụ thuật ngữ chung hơn được sử dụng.
Câu hỏi hay.
Tôi sẽ giải thích điều đó theo cách đơn giản nhất có thể: Giả sử bạn có 5 quả táo trong giỏ. Mỗi quả táo đó là một đối tượng của loại Táo, có một số đặc điểm (tức là to, tròn, mọc trên cây).
Theo thuật ngữ lập trình, bạn có thể có một lớp gọi là Apple, có các biến kích thước: to, shape: tròn, môi trường sống: mọc trên cây. Để có 5 quả táo trong giỏ của bạn, bạn cần phải nhanh chóng 5 quả táo. Apple apple1, Apple apple2, Apple apple3 etc...
.
Cách khác: Đối tượng là định nghĩa của cái gì đó, cá thể là những thứ vật chất.
Điều này có nghĩa không?
Instance: instance có nghĩa là chỉ tạo một tham chiếu (bản sao).
đối tượng: nghĩa là khi vị trí bộ nhớ được liên kết với đối tượng (là một thực thể thời gian chạy của lớp) bằng cách sử dụng toán tử new.
Nói một cách đơn giản, Instance đề cập đến bản sao của đối tượng tại một thời điểm cụ thể trong khi đối tượng đề cập đến địa chỉ bộ nhớ của lớp.
Giả sử bạn đang chế tạo một số chiếc ghế.
Sơ đồ chỉ ra cách xây dựng một chiếc ghế và đặt nó lại với nhau tương ứng với một lớp phần mềm.
Giả sử bạn đóng năm chiếc ghế theo mẫu trong sơ đồ đó. Tương tự như vậy, bạn có thể xây dựng năm đối tượng phần mềm theo mẫu trong một lớp.
Mỗi ghế có một số duy nhất được đốt vào đáy ghế để xác định từng ghế cụ thể. Ghế 3 là một ví dụ của mẫu ghế. Tương tự như vậy, vị trí bộ nhớ 3 có thể chứa một phiên bản của mẫu phần mềm.
Vì vậy, một ví dụ (ghế 3) là một biểu hiện cụ thể, duy nhất của một mẫu ghế.
Đối tượng :
Về cơ bản, nó là một thuật ngữ giá chung, nó là một gói Phần mềm có trạng thái (biến) và hành vi (phương thức)
Lớp :
Bản in màu xanh lam (mẫu) cho một cá thể đối tượng - đó là một đối tượng duy nhất, chẳng hạn như bạn tạo một đối tượng hai lần, điều đó có nghĩa là bạn đã tạo hai phiên bản
để tôi lấy một ví dụ
Class student()
{
private string firstName;
public student(string fname)
{
firstName=fname;
}
Public string GetFirstName()
{
return firstName;
}
}
Ví dụ đối tượng :
Student s1 = new student ("Martin"); Student s2 = new student ("Kumar");
Các s1, s2 đang có đối tượng của lớp Student
Phiên bản :
s1 và s2 là các thể hiện của sinh viên đối tượng mà cả hai là duy nhất .
nó cũng có thể được gọi là tài liệu tham khảo .
về cơ bản s1 và s2 là các biến được gán một đối tượng
Các đối tượng và cá thể hầu hết giống nhau; nhưng có một sự khác biệt rất nhỏ. Nếu Car
là một lớp thì 3 Car
s là 3 đối tượng khác nhau. Tất cả các đối tượng này đều là cá thể. Vì vậy, 3 chiếc xe này là các đối tượng từ các thể hiện của Car
lớp.
Nhưng từ "instance" cũng có thể có nghĩa là "cấu trúc thể hiện". Nhưng đối tượng chỉ dành cho các lớp.
Tất cả các đối tượng là cá thể. Không phải tất cả các trường hợp đều phải là đối tượng. Các thể hiện có thể là "thể hiện cấu trúc" hoặc "đối tượng". Tôi hy vọng điều này làm cho sự khác biệt rõ ràng với bạn.
Đối tượng là một cấu trúc, một cái gì đó tĩnh có các tính năng và đặc điểm nhất định, chẳng hạn như thuộc tính và phương thức, nó có thể là bất kỳ thứ gì (một chuỗi, một điều khiển người dùng, v.v.)
Một phiên bản là một bản sao duy nhất của đối tượng đó mà bạn có thể sử dụng và làm mọi việc với nó.
Hãy tưởng tượng một sản phẩm giống như một chiếc máy tính.
Máy trạm THE xw6400 là một đối tượng
Máy trạm xw6400 CỦA BẠN, (hoặc máy trạm xw6400 của VỢ CỦA BẠN) là một phiên bản của đối tượng máy trạm xw6400
Câu trả lời này có thể được xem là sáo mòn, nhưng lo lắng về sự khác biệt giữa một thể hiện và đối tượng đã là thành phố sáo mòn.
Tôi nghĩ nó được mô tả tốt nhất bằng javascript:
let obj= {"poo":1}
// "obj" is an object
câu thơ
Class Trash {
constructor(){this.poo = 1;}
}
let i = new Trash();
// "i" is an instance
Một thể hiện là một đại diện cụ thể của một đối tượng. Một đối tượng là một thứ chung chung trong khi một cá thể là một đối tượng duy nhất đã được tạo trong bộ nhớ. Thông thường một cá thể sẽ có các giá trị được gán cho các thuộc tính của nó để phân biệt nó với các trường hợp khác của loại đối tượng.
Nếu chúng ta thấy Định nghĩa đối tượng và đối tượng Instance -
Bộ nhớ được cấp phát cho thành viên của lớp tại thời điểm chạy được gọi là đối tượng hoặc đối tượng là thể hiện của Lớp.
Hãy để chúng tôi xem Định nghĩa của trường hợp -
Bộ nhớ được cấp phát cho Bất kỳ tại thời điểm chạy được gọi là biến thể hiện.
Bây giờ hiểu ý nghĩa của bất kỳ phân bổ bộ nhớ thời gian chạy nào xảy ra trong C cũng thông qua Malloc, Calloc, Realloc như:
struct p
{
}
p *t1
t1=(p) malloc(sizeof(p))
Vì vậy, ở đây chúng ta cũng đang phân bổ cấp phát bộ nhớ thời gian chạy nhưng ở đây chúng ta gọi là thể hiện nên t1 là thể hiện ở đây chúng ta không thể nói t1 là đối tượng nên Mọi đối tượng là thể hiện của Lớp nhưng mọi Đối tượng không phải là Đối tượng.
Đối tượng - Một thể hiện của lớp có trạng thái riêng và quyền truy cập vào tất cả các hành vi được định nghĩa bởi lớp của nó.
Phiên bản - Tham chiếu đến một vùng bộ nhớ cho lớp cụ thể đó.
Tôi không thể tin được, ngoại trừ một tên không ai dùng mật mã để giải thích điều này, hãy để tôi thử một lần nữa!
// Design Class
class HumanClass {
var name:String
init(name:String) {
self.name = name
}
}
var humanClassObject1 = HumanClass(name: "Rehan")
Bây giờ bên trái tức là: "humanClassObject1" là đối tượng và bên phải tức là: HumanClass (tên: "Rehan") là thể hiện của đối tượng này.
var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.
Vì vậy, về cơ bản, instance chứa các giá trị cụ thể cho đối tượng đó và các đối tượng chứa vị trí bộ nhớ (tại thời điểm chạy).
Hãy nhớ câu lệnh nổi tiếng "object reference not set to a instance of a object", điều này có nghĩa là các đối tượng không khởi tạo không có bất kỳ thể hiện nào. Trong một số ngôn ngữ lập trình như swift, trình biên dịch sẽ không cho phép bạn thiết kế một lớp thậm chí không có bất kỳ cách nào để khởi tạo tất cả các thành viên của nó (biến ví dụ: tên, tuổi, v.v.), nhưng trong một số ngôn ngữ, bạn được phép làm điều này:
// Design Class
class HumanClass {
var name:String // See we don't have any way to initialise name property.
}
Và lỗi sẽ chỉ được hiển thị tại thời điểm chạy khi bạn cố gắng thực hiện điều gì đó như sau:
var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.
Lỗi này chỉ ra rằng, các giá trị cụ thể (cho các biến \ thuộc tính) là "INSTANCE" như tôi đã cố gắng giải thích điều này ở trên! Và đối tượng tức là: "myClass" chứa vị trí bộ nhớ (tại thời điểm chạy).
Khi một biến được khai báo thuộc loại tùy chỉnh (lớp), chỉ một tham chiếu được tạo, được gọi là đối tượng. Ở giai đoạn này, không có bộ nhớ nào được cấp cho đối tượng này . Nó hoạt động như một con trỏ (tới vị trí mà đối tượng sẽ được lưu trữ trong tương lai). Quá trình này được gọi là 'Khai báo'.
Employee e; // e is an object
Mặt khác, khi một biến kiểu tùy chỉnh được khai báo bằng new
toán tử, toán tử này sẽ cấp phát bộ nhớ trong heap cho đối tượng này và trả về tham chiếu đến bộ nhớ được cấp phát. Đối tượng này bây giờ được gọi là thể hiện . Quá trình này được gọi là 'Instantiation'.
Employee e = new Employee(); // e is an instance
Mặt khác, trong một số ngôn ngữ như Java, một đối tượng tương đương với một thể hiện, như rõ ràng từ dòng được viết trong tài liệu của Oracle về Java :
Lưu ý: Cụm từ "khởi tạo lớp" có nghĩa giống như "tạo một đối tượng". Khi bạn tạo một đối tượng, bạn đang tạo một "thể hiện" của một lớp, do đó "khởi tạo" một lớp.
mỗi đối tượng được cho là một thể hiện của lớp nó nhưng mỗi thể hiện của lớp có giá trị riêng cho từng nội dung thuộc tính chia sẻ tên thuộc tính và thao tác với các nội dung của lớp nhưng một đối tượng chứa một tham chiếu ngầm định đến lớp của nó.
Lớp: Một lớp là chữ in màu xanh lam. Đối tượng: Nó là bản sao của lớp. Instance: Là một biến được sử dụng để giữ địa chỉ bộ nhớ của đối tượng.
Một ví dụ phân tích rất cơ bản
Class House -> Bản thiết kế của ngôi nhà. Nhưng bạn không thể sống trong bản in xanh. Bạn cần một Ngôi nhà vật lý là thể hiện của lớp để sống, tức là địa chỉ thực của đối tượng là thể hiện. Thể hiện đại diện cho các đối tượng.
Khi bạn khởi tạo một lớp (sử dụng new), thứ được khởi tạo đó sẽ trở thành một đối tượng. Đối tượng là một thứ có thể tuân theo các nguyên tắc đóng gói, đa hình, trừu tượng của lập trình hướng đối tượng và thứ thực mà một chương trình tương tác để sử dụng các thành viên thể hiện được định nghĩa trong lớp. Đối tượng chứa các thành viên thể hiện (thành viên không tĩnh).
Vì vậy, thể hiện của một lớp là một đối tượng. Từ 'instance' được sử dụng khi bạn đề cập đến nguồn gốc từ nơi nó sinh ra, sẽ rõ ràng hơn nếu bạn nói 'instance của một lớp' so với 'đối tượng của một lớp' (mặc dù sau này có thể được sử dụng).
Cũng có thể đọc phần 'Lớp bên trong' của tài liệu java này trên các lớp lồng nhau - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
Java là một ngôn ngữ lập trình hướng đối tượng (OOP). Điều này có nghĩa là mọi thứ trong Java, ngoại trừ các kiểu nguyên thủy đều là một đối tượng.
Bây giờ, các đối tượng Java tương tự như các đối tượng trong thế giới thực. Ví dụ, chúng ta có thể tạo một đối tượng xe hơi trong Java, đối tượng này sẽ có các thuộc tính như tốc độ và màu sắc hiện tại; và hành vi như: tăng tốc và đỗ xe.
Đó là đối tượng .
Ví dụ , ở phía bên kia, là một bản sao khởi tạo duy nhất của đối tượng đó trông giống như Car car = new Car()
.
Hãy xem nó để tìm hiểu thêm về các lớp và đối tượng Java
Câu trả lời nhanh chóng và đơn giản
Về sự khác biệt giữa an object
và an instance
, tôi không nghĩ rằng có bất kỳ sự đồng thuận nào.
Đối với tôi, có vẻ như mọi người thay đổi nó khá nhiều thay thế cho nhau, trong các bài báo, bài đăng trên blog, sách hoặc cuộc trò chuyện.
Đối với tôi, theo cách tôi thấy, một đối tượng là một thực thể chung và sống động trong bộ nhớ, được chỉ định bởi ngôn ngữ mà nó được sử dụng. Cũng giống như Object
lớp trong Java
. Chúng tôi không quan tâm nhiều đến loại của nó, hoặc bất kỳ thứ gì khác liên quan đến nó, cho dù nó có được quản lý bởi một vùng chứa hay không.
An instance
là một object
nhưng được liên kết với một loại, như trong this method accepts Foo instances
hoặc you can not put Animal instances in an instance of
a List of Vehicles
.
object
ví dụ s có locks
liên kết với chúng, không phải instance
s, trong khi instance
s có các phương thức. objects
là rác được thu gom, không phải instance
s.
Nhưng như tôi đã nói, đây chỉ là cách tôi thấy và tôi không nghĩ có bất kỳ tổ chức nào mà chúng tôi có thể tham khảo để đưa ra định nghĩa chuẩn giữa họ và mọi người sẽ có cách hiểu / định nghĩa hơi khác nhau (tất nhiên là trong giới hạn) .
Một đối tượng là một thứ chung chung, ví dụ, lấy một hàm tuyến tính trong toán học
ax + b là một đối tượng, trong khi 3x + 2 là một thể hiện của đối tượng đó
Đối tượng <<< Phiên bản
Chung <<< Cụ thể
Không có gì hơn thế này
Một đối tượng có thể là một lớp, giả sử bạn có một lớp gọi là bóng rổ.
nhưng bạn muốn có nhiều quả bóng rổ vì vậy trong mã của bạn, bạn tạo nhiều hơn 1 quả bóng rổ
nói bóng rổ1 và bóng rổ2. Sau đó, bạn chạy ứng dụng của mình. Bây giờ bạn có 2 phiên bản của đối tượng bóng rổ.
Đối tượng đề cập đến lớp và cá thể đề cập đến một đối tượng, nói cách khác, đối tượng là bản sao của một đối tượng với các giá trị cụ thể trong đó.