Sự khác biệt giữa Instance và biến tĩnh với một ví dụ (chương trình) thích hợp là gì?


Câu trả lời 1:

Tất cả đã đưa ra ví dụ tốt đẹp và giải thích. Tôi sẽ tiếp tục với một:

Biến sơ thẩm là thuộc tính của từng đối tượng (thể hiện) của một lớp.

Biến tĩnh là thuộc tính của chính lớp đó và không thuộc về bất kỳ đối tượng cụ thể (thể hiện) nào của lớp đó.

So sánh và đối chiếu:

  1. Các biến tĩnh được khởi tạo tại thời điểm tải lớp. Có thể truy cập sơ đồ thông qua các đối tượng. Biến có thể được truy cập bằng tên lớp. Ví dụ đối tượng biến phải được tạo và chỉ có thể được truy cập thông qua đối tượng. thí dụ

cú pháp có thể khác nhau từ ngôn ngữ này sang ngôn ngữ khác

Class_A :: staticVariable // có thể được truy cập

ObjClass_A = Class_A mới

ObjClass_A.instanceVariable

3. Biến tĩnh có thể được khởi tạo một lần. Vì vậy, nó là khái niệm cốt lõi trong mô hình singleton.

4. Biến tĩnh không thể là một phần của giao diện cho lớp trừu tượng, vì bộ nhớ không được phân bổ cho chúng.



Câu trả lời 2:

Biến sơ thẩm là thuộc tính của từng đối tượng (thể hiện) của một lớp.

Biến tĩnh là thuộc tính của chính lớp đó và không thuộc về bất kỳ đối tượng cụ thể (thể hiện) nào của lớp đó.

-

Thí dụ:

lớp nhân viên {
private int int workerCount = 0;
chuỗi tên riêng empName;
int int empId;

//constructor
Nhân viên công cộng (Chuỗi eName, int eId) {
this .empName = eName;
this .empId = eId;
nhân viênCount ++;
}

công cộng addEmployee (String eName, int eId) {
trả lại Nhân viên mới (eName, eId);
}

công khai void xóaEmployee (int eId) {
Số nhân viên--;
}

công khai int getEmployeeCount () {
trả lại nhân viênCount;
}
}

Trong ví dụ đơn giản này workerCount là một biến tĩnh cung cấp số lượng nhân viên hiện tại; số lượng nhân viên chỉ được tăng hoặc giảm nếu chúng ta thêm hoặc xóa một nhân viên.

EmpName và empId là biến đối tượng vì chúng được gắn vào các đối tượng nhân viên và tốt nhất là sẽ khác nhau cho từng đối tượng.

Vì vậy, các biến phổ biến cho tất cả các đối tượng cần phải là biến tĩnh, khác biến nó thành một biến thể hiện.



Câu trả lời 3:

Biến sơ thẩm là một biến thành viên được định nghĩa trong lớp và mỗi thể hiện (đối tượng của lớp đó), có một bản sao riêng của nó. Điều này vẫn còn trong bộ nhớ miễn là đối tượng tồn tại.

Kiểm tra lớp
{
Chuỗi abc;
}

Để truy cập ở trên, bạn phải khởi tạo Kiểm tra lớp

Kiểm tra t = thử nghiệm mới ();
t.abc = tinh ranh Xin chào thế giới.
Kiểm tra t1 = Kiểm tra mới ();
t1.abc = "Chào mừng"
Kiểm tra t2 = Kiểm tra mới ();
t2.abc = "Kiểm tra";

Bây giờ nếu bạn thấy ví dụ trên, chúng ta có 3 đối tượng của lớp Test, t, t1 và t2, mỗi đối tượng có bản sao riêng của biến abc và được lưu trữ tại các vị trí bộ nhớ khác nhau.

Mặt khác, biến tĩnh được liên kết với một lớp, hơn là với một đối tượng. Chúng có một vị trí cố định trong bộ nhớ và được tham chiếu bằng tên lớp.

Kiểm tra lớp
{
Chuỗi abc;
số lượng int tĩnh = 0;
}

Bây giờ để truy cập biến đếm, bạn không cần khởi tạo Kiểm tra. Bạn có thể truy cập nó đơn giản như

Test.count = 1;

Nói chung các biến tĩnh được sử dụng, nếu bạn muốn



Câu trả lời 4:

Bạn có thể google các loại câu hỏi này để biết thêm chi tiết và mã mẫu

Biến Instance - Một biến được khai báo bên trong lớp nhưng bên ngoài phương thức được gọi là biến thể hiện. Nó không được khai báo là tĩnh.

Biến tĩnh- Một biến được khai báo là tĩnh được gọi là biến tĩnh. Nó không thể là cục bộ, Nó không dành cho bất kỳ đối tượng particulat nào mà cho cả lớp

Kiểm tra lớp {
int iv = 10; // biến đối tượng
int int sv = 100; // biến tĩnh
phương thức void () {
int lv = 50; // biến cục bộ
}}

Để biết thêm chi tiết, hãy kiểm tra các loại biến Java