Scroll to top
Khác biệt giữa Class Method và Instance Method trong Ruby

Khác biệt giữa Class Method và Instance Method trong Ruby

ByYuto 12/10/2024 12:14
4min read

Trong Ruby, khái niệm về Class Method và Instance Method là hai yếu tố cơ bản mà mọi lập trình viên cần nắm vững. Bài viết này sẽ đi sâu vào việc phân biệt và sử dụng hai loại phương thức này trong Ruby.

Class MethodInstance Method là những khái niệm quan trọng trong lập trình hướng đối tượng. Trong bài này chúng ta sẽ cùng tìm hiểu về Class Method, Instance Method trong ngôn ngữ lập trình Ruby.

Class method là gì?

Class method là method được định nghĩa trên class và có thể được gọi trực tiếp trên class, chứ không phải trên các đối tượng (instance) của class. Chúng thường được sử dụng cho các hoạt động liên quan đến class như một toàn thể.

Cách khai báo Class method

Cách khai báo class method trong Ruby rất linh hoạt. Dưới đây là 3 cách thường dùng để khai báo một class method

ruby
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Cách 1
class Car
  def self.total
    10
  end
end

puts Car.total # => 10

# Cách 2
class Car
  class << self
    def total
      10
    end
  end
end

puts Car.total # => 10

# Cách 3
class Car; end

def Car.total
  10
end

puts Car.total # => 10

Instance method là gì?

Instance method là method được định nghĩa trong một class và có thể được gọi trên các đối tượng (instance) của lớp đó. Chúng giúp truy cập và thay đổi dữ liệu của từng đối tượng cụ thể.

Cách khai báo Instance method

ruby
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Cách 1
class Car
  def name
    'Toyota'
  end
end

puts Car.new.name # "Toyota"

# Cách 2
class Car
  attr_accessor :name
end

car = Car.new
car.name = 'Toyota'

puts car.name # "Toyota"

# Cách 3
class Car; end

car = Car.new
def car.name
  'Toyota'
end

puts car.name # "Toyota"
  • Cách 1: Đây là cách khai báo instance method phổ biến nhất, áp dụng cho tất cả các instance của class đó.
  • Cách 2: attr_accessor tạo các gettersetter method cho thuộc tính name, áp dụng cho tất cả các instance của class.
  • Cách 3: Đây là cách khai báo method chỉ áp dụng cho một đối tượng cụ thể, không ảnh hưởng đến các instance khác của class.

Phân biệt Class Method và Instance Method

Class Method:

  • Được gọi trên class.
  • Sử dụng class method khi cần thực hiện các thao tác liên quan đến class như một toàn thể, như tạo ra các đối tượng mẫu, thực hiện thống kê dữ liệu hoặc thực hiện các tìm kiếm.
  • Ví dụ: User.create_sample_users

Instance Method:

  • Được gọi trên một đối tượng cụ thể.
  • Sử dụng instance method khi cần truy cập hoặc thay đổi dữ liệu của một đối tượng cụ thể.
  • Ví dụ: user.profile

Sự khác biệt giữa Class Method và Instance Method là một khía cạnh quan trọng trong lập trình Ruby. Hiểu và áp dụng đúng cách sẽ giúp bạn tạo ra những chương trình mạnh mẽ, dễ bảo trì và hiệu quả.

Đánh giá bài viết: 4.9/5 (32 đánh giá)
Bạn chưa đánh giá

Bình luận

Author
hoclaptrinh.io author
Tác giả:Yuto Yasunaga

Mình là một full stack developer, tốt nghiệp và làm việc tại Nhật Bản. Trang web này là nơi mình tổng hợp, đúc kết và lưu trữ lại những kiến thức trong quá trình học và làm việc liên quan đến IT.
Hy vọng những bài viết ở website này sẽ có ích cho bạn.