Vinova tuyển lập trình viên Mobile & Web ở Hà Nội, lương $300-1000

Article: Xóa method khỏi class 1156

ngocdaothanh.myopenid.com 172
Updated over 3 years ago

Có lần các bạn ở JavaVietNam bàn nhau cách xóa method khỏi class (rất thú vị, bạn nào tìm lại được link xin ghi chú giúp).

Trong Ruby thì vì mọi thứ đều là object, nên việc này thật đơn giản.

Xem đoạn mã sau:

class Parent
def hello
puts "In parent"
end
end

class Child < Parent
def hello
puts "In child"
end
end

c = Child.new
c.hello

class Child
remove_method :hello # remove from child, still in parent
end
c.hello

class Child
undef_method :hello # prevent any calls to 'hello'
end
c.hello

Kết quả thực thi của đoạn mã trên như sau:

In child
In parent
undefined method `hello' for # (NoMethodError)

Chiêu thức sửa đổi cái gì đó đã được định nghĩa gọi là reopen. Ngoài method, còn có thể sửa đổi các thứ khác như định nghĩa hằng số... Chi tiết xin tham khảo tài liệu.

Comments

phananhvu.myopenid.com 125
over 4 years ago

Thảo luận về kế thừa không hết đó nằm ở đây. Tuy nhiên câu hỏi đặt ra là liệu điều này có phá vỡ nguyên tắc thiết kế OOP hay không?

You must login to be able to comment

Uploaded files

No file uploaded yet

You must login to be able to upload

Nhà tài trợ:

Mọi người đều tự do viết bài, sửa bài của người khác, và bình luận ở trang web này. Bạn muốn chủ động tạo bài mới để chia sẻ kinh nghiệm với mọi người? Xin click link ở dưới.

Create new content