2009-08-26 44 views
12

Nếu một lớp đã được định nghĩa trước như thế nào tôi có thể nói nó kế thừa từ một lớp chuyênSet lớp thừa kế sau delcaration lớp HOẶC thiết lập lớp thừa kế trên lớp const_set

Ví dụ:

class Parent 
    .. 
end 

class Klass 
    .. 
end 

Bây giờ tôi muốn nó kế thừa từ Chánh

tôi không thể mở lại lớp và đặt nó bởi vì tôi sẽ nhận được một lỗi lớp không phù hợp

class Klass < Parent 
    .. 
end 

Cụ thể tôi đang cố gắng để tìm hiểu làm thế nào để thiết lập các thừa kế lớp trên lớp im tạo qua Object.const_set

klass = Object.const_set('Klass', Class.new) 

Làm thế nào tôi có thể nói Klass kế thừa từ lớp phụ huynh?

Trả lời

24

Không có cách nào để thay đổi siêu lớp của một lớp đã tồn tại.

Để chỉ định lớp bậc trên của lớp bạn đang tạo động, bạn chỉ cần chuyển siêu lớp làm đối số cho Class.new.

class Parent 
end 
klass = Class.new(Parent) 
klass.superclass #=> Parent 

Cũng như lưu ý: Bạn không tạo lớp học với const_set. Bạn đang tạo nó với Class.new. Bạn chỉ cần lưu trữ lớp được tạo trong một hằng số với const_set. Khi const_set được gọi, Class.new đã xảy ra và lớp cha không thể thay đổi được nữa.

+0

Cảm ơn bạn, đây chính xác là những gì tôi cần. –

Các vấn đề liên quan