01/10/2018, 00:03

Thắc mắc trong hướng đối tượng (Đối tượng và lớp)

Chào các ae, mình đang thắc mắc ở chỗ :

  • Biến local
  • Biến instance
  • Biến class

không biết phân biệt giữa các biến, nếu các ae có thể giúp thì xin cho mình thêm cái ví dụ, mình cảm ơn

Trích từ bài viết :
Biến Local: Các biến được định nghĩa bên trong các phương thức, constructor hoặc block code được gọi là biến Local. Biến này sẽ được khai báo và khởi tạo bên trong phương thức và biến này sẽ bị hủy khi phương thức đã hoàn thành.
Biến Instance: Các biến instance là các biến trong một lớp nhưng ở bên ngoài bất kỳ phương thức nào. Những biến này được khởi tạo khi lớp này được tải. Các biến instance có thể được truy cập từ bên trong bất kỳ phương thức, constructor hoặc khối nào của lớp cụ thể đó.
Biến Class: Các biến class là các biến được khai báo với một lớp, bên ngoài bất kỳ phương thức nào, với từ khóa static.

Tynk Huynk viết 02:05 ngày 01/10/2018

Giả sử mình có 1 class Student

class Student {
String ID;
String Name;
static String ClassID = "SE1163";

public void showAge(){
int age = 18;
System.out.println("I am " + age);
}



}

Ví dụ mỗi đối tượng của class Student có một ID, name riêng thì ID, name chính là Instance variables,

Nhiều đói tượng của class Student có thể dùng chung 1 ClassID nên ClassID phải set stactic nên gọi là Class variable (biến lớp).

Còn trong phương thức showAge() có sử dụng 1 biến là age, biến náy sẽ bị hủy khi đối tượng hoàn thành phưong thức đó nên gọi là biến local

Van Huong viết 02:14 ngày 01/10/2018

Oops! Mấy khái niệm này dịch sang tiếng Việt mình đúng là không phải dễ hiểu. Tôi đọc cuốn sách “Object Oriented Thought Process,3rd Edition by Matt Weisfeld”, ở chương 3 “Advanced Object-Oriented Concepts”, phần “The Concept of Scope”, thấy tác giả giải thích khá rõ về mấy khái niệm bạn vừa thắc mắc nên đề xuất bạn nên đọc thử.

Đây là bản tóm tắt của tôi:

The Concept of Scope

Multiple objects can be instantiated from a single class. Each of these objects has a unique identify and state and is allocated its own separated memory. Methods represent the behaviors of an object; the state of the object is represented by attributes.

Local attributes are owned by a specific method.

public class Number {

     public method1(){

        int count;

    }

    public method2(){

        int count;

    }

}

The compiler will concern the above situation as “method1.count” and “method2.count” in order to know removing the corresponding “count” when the method is terminated.

Object attributes are shared for their own methods but are not shared between different objects.

public class Number {

    int count; // available to both method1 and method2

    public method1() {

       count = 1;

    }

    public method2() {

      count = 2;

    }


} 

There is only one copy of “count” and both assignments operate in “method1” and “method2” on the same copy in memory.

Number number1 = new Number();

Number number2 = new Number();

Number number3 = new Number();

There are actually three separate instances of “count”.

Class attributes are allocated a single piece of memory for all objects instantiated from the class.

public class Number {

    static int count;

    public method1() {

    }

}

All objects of the class “Number” use the same memory location for “count”.

Bài liên quan
0